javascript 的 && 和 ||

来源:互联网 发布:微信多开软件苹果版 编辑:程序博客网 时间:2024/06/05 05:06

&&  的意思是逻辑 与    比如最简单的  true && false 返回false  会先判断第一个符号左边的表达式为false 则整个表达式返回false 


如果左边的表达式为 true 则继续判断右边的表达式,如果为false 则整个表达式为 false  或者为true 则整个表达式为true


a() && b() :如果执行a()后返回true,则执行b()并返回b的值;如果执行a()后返回false,则整个表达式返回a()的值,b()不执行;


如果比较的是两个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=赋值、运算赋值,多重求值


1 0