1、在学习写jquery插件的时候,发现了有类似这样的代码 test = test || "",无法理解,查阅资料,看到如下释解。
a = a || "defaultValue";
其实上面的代码与如下的两种方式写法的代码表达的意义是一致的。
第一种:
if(! a){
a="defaultValue";
}
第二种:
if(a == null || a == "" || a == undefined){
a = "defaultValue";
}
以上的三种是等价,为了弄明白这个问题,我们需要了解javascript 中数据类型在转换的过程中bool类型的时候,发生了什么,
在javascript 中,数据类型可以分为“真值”和“假值”,顾名思义,真值转为bool时的值为true;假值转换为bool的时候,会变成false;
下面罗列一些常见的数据类型转换为bool时候的值:
数据类型 转换为bool后的值
null false
undefined false
Object true
function true
0 false
1 true
0、1之外的数字 true
字符串 true
“”(空字符串) false
在if表达式中,首先javascript将条件表达式转换为bool类型,表达式中为真值的时候,执行if中的逻辑,否则跳过;
下面来看看 && 和 || 这两个表达式
如果 && 左侧表达式的值为真值,则返回右侧表达式的值,否则返回左侧表达式的值
如果 || 左侧表达式的值为真值,则返回左侧表达式的值;否则返回右侧表达式的值
如此就可以理解 a=a ||"defaultValue";的逻辑了,如果a为假值,那么就将“defaultValue”赋值给a,否则将a的值赋给a本身。