&& 的意思是逻辑 与 比如最简单的 true && false 返回false 会先判断第一个符号左边的表达式为false 则整个表达式返回false
如果左边的表达式为 true 则继续判断右边的表达式,如果为false 则整个表达式为 false 或者为true 则整个表达式为true
例如:
true && true //返回 true true && false //返回 false false && false //返回 false
如果比较的是两个Object类型 那么返回第二个对象
如果两个比较表达式 其中有一个是null 那么返回null
如果两个表达式 其中一个是NaN 那么返回NaN
如果两个表达式 其中一个是NaN,那么返回 undefined
&& 优先级高于 ||
a() || b() :如果执行a()后返回true,则整个表达式返回a()的值,b()不执行;如果执行a()后返回false,则执行b()并返回b()的值;
a && b : 将a, b转换为Boolean类型, 再执行逻辑与, true返回b, false返回a a || b : 将a, b转换为Boolean类型, 再执行逻辑或, true返回a, false返回b
转换规则: 对象为true 非零数字为true 非空字符串为true 其他为false
技巧:设置默认值:var str=strone||'默认值'
by the way
js中的常用运算符优先级
下表按从最高到最低的优先级列出JavaScript运算符。具有相同优先级的运算符按从左至右的顺序求值。
运算符 描述 . [] () 字段访问、数组下标、函数调用以及表达式分组 ++ -- - ~ ! delete new typeof void 一元运算符、返回数据类型、对象创建、未定义值 * / % 乘法、除法、取模 + - + 加法、减法、字符串连接 << >> >>> 移位 < <= > >= instanceof 小于、小于等于、大于、大于等于、instanceof == != === !== 等于、不等于、严格相等、非严格相等 & 按位与 ^ 按位异或 | 按位或 && 逻辑与 || 逻辑或 ?: 条件 = oP= 赋值、运算赋值 , 多重求值