理解操作符
(1)等号()和全等号(=)
等号:等号操作符,在比较两个操作数的相等性前,先会转换操作数(自动转换),然后再比较他们的相等性。
- 如果一个操作数是布尔值,则在比较相等性之前先将其转换为数值,false转换为0,而true转换为1.
- 如果一个操作数是字符串,另一个操作数是数值,则在比较相等性之前先将字符串转换为数值。
- 如果一个操作数是对象,另一个操作数不是,则调用对象的valueof()方法,获得对象本身,接着在用前面的方法进行转换比较
全等号:直接进行比较,不转换数据类型,所以比较的时候还会比较数据类型。
实例:
"11" != 11 //false,比较前经过转换,11==11
"11" !== 11 //true,因为数据类型不一样,一个字符,一个数字,当然不相等
(2) 布尔运算符
布尔操作符一共有三个:非(NOT),与(AND)和或(OR)
1.逻辑非(!)
无论操作数是什么数据类型,都回返回一个布尔值。逻辑非操作符首先会将它的的操作数转换为一个布尔值(具体的转换规则看数据类型转换),然后再对其求反。
除了以下六个值,其他都是自动转为true。
undefined
null
-0
0或+0
NaN
''(空字符串)
一般用于条件语句中,判断结果决定是否执行函数
!!x //等价于Boolean(x),一元!将操作数转换为布尔值并取反,在取一次反,负负得正,相当于恢复正常,但是将操作数转换成了布尔值了
2.逻辑与(&&)
只有逻辑的两个操作数同时为true才会返回true,当然了,也可以返回其它值,所以记住返回的不一定是布尔值
一般情况下用来对真值和假值作布尔运算。
实例:求两个数的绝对值和
if ((a > 0)&&(b > 0)){
return a+b;
}else{
return a-b
}
3.逻辑或(||)
只要逻辑的两个操作数其中有一个为true结果就为true,当然了,也可以返回其它值,所以记住返回的不一定是布尔值
一般用来从一组备选表达式中选出第一个真值表达式,通常用在函数体内,用来给参数提供默认值。
实例:将o的成员属性复制到p中,并返回p
function copy(o,p){
p=p||{};//如果没有传入参数p,则给p赋值一个{}
}
e = e || window.event;如果e不存在(为null, undefined,0等)的时候,将window.event赋值给e,否则的话继续使用e。
var max=max_width||preference.max_width||500;