理解操作符

(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;
posted @ 2017-01-18 14:20  叶子陪你玩  阅读(227)  评论(0编辑  收藏  举报