JavaScript学习笔记重点1(慕课)

1.逻辑与 逻辑非的判断准则
课件中的规则是:
在 javascript 中,对于 && 不仅仅可以用于 boolean 类型,也不仅仅返回 Boolean 类型的结果。 
l 如果第一个操作数是 Boolean 类型,而且值为 false ,那么直接返回 false。 
l 如果第一个操作数是 Boolean 类型,而且值为 true,另外一个操作数是 object 类型,那么将返回这个对象。 
l 如果两个操作数都是 object 类型,那么,返回第二个对象。 
l 如果任何一个操作数是 null,那么,返回 null。 
l 如果任何一个操作数是 NaN,那么返回 NaN。 
l 如果任何一个操作数是 undefinded,那么返回 undefined。 
但是遇到如下例子:
我以为根据“l 如果任何一个操作数是 NaN,那么返回 NaN。 ”结果应该是nan,但是错了,结果是0
很是困惑,找到了下列规则,比较管用:
a && b : 将a, b转换为Boolean类型, 再执行逻辑与, true返回b, false返回a 
a || b : 将a, b转换为Boolean类型, 再执行逻辑或, true返回a, false返回b 
转换规则: 
对象为true 
非零数字为true 
非空字符串为true 
其他为false ,如undefined、null、NaN
&& 优先级高于 ||
对于 || 来说,同样也不仅仅用于 Boolean 类型,也不仅仅返回 Boolean 类型的结果。 
事实上,null、undefined、NaN 都将被看作 false。而对象被当作 true。 
l 如果第一个操作数是 boolean 类型,而且值为 true, 那么,直接返回 true。 
l 如果第一个操作数是 Boolean 类型,而且值为 false ,第二个操作数为 object,那么返回 object 对象。 
l 如果两个操作数都是 object 类型,那么返回第一个对象。 
l 如果两个操作数都是 null,那么,返回 null。 
l 如果两个操作数都是 NaN,那么返回 NaN。 
l 如果两个操作数都是 undefined,那么,返回 undefined。
那多个&& 如何操作呢?
逻辑运算符是从前往后依次判断, 判断到那个能得出最终结论的地方 ,就会 停止往下判断 返回最后判断的那个内容 ,不管它是真是假。( 记住这句话就行
||运算符,只要一个为真就为真,所以你可以认为它会从前往后一直按顺序在找真,找到真就返回那个真。找不到也返回最后一个判断的那个值。
同理:&&运算符是只要一个为假就为假,所以它会从前往后一直找假的,返回最后一个判断的值。
例子:
1 && “fdf" && nan ----- nan
1 && “fdf" && 99 ----- 99
0 && nan && "ee" ---- 0
另附:JS运算符优先级(从高到低列出)
  运算符
描述
. [] ()
字段访问、数组下标、函数调用以及表达式分组
++ -- - ~ ! delete new typeof void
一元运算符、返回数据类型、对象创建、未定义值
* / %
乘法、除法、取模
+ - +
加法、减法、字符串连接
<< >> >>>
移位
< <= > >= instanceof
小于、小于等于、大于、大于等于、instanceof
== != === !==
等于、不等于、严格相等、非严格相等
&
按位与
^
按位异或
|
按位或
&&
逻辑与
||
逻辑或
?:
条件
= oP=
赋值、运算赋值
,
多重求值

你可能感兴趣的:(JavaScript)