逻辑运算的一点小技巧
&& 与 ||
?
这两个运算符算是和传统语言(java,c++)区别蛮大了,首先看两段代码:
?
var x = '1';alert(true|| x);alert(false && x)?
这个结果可能都知道,即使传统语言程序员也能猜到结果是 true false,那么下面的结果呢
?
var x = '1';alert(false || x);alert(true && x)
?
传统语言程序员可能会说那就是 true true,可惜结果是? 是? 1 1
?
?
这就是脚本语言的一个特性,perl,js包含,逻辑运算符会像传统语言一样根据短路原理计算逻辑表达式,根据该元素转换成的boolean值判断,返回最后一个短路计算的值。
?
如 false || x
根据短路原理,计算false不短路,下一步看 x 转换的 boolean 为 true,则最终返回 x,而? true || x,看到true 一下就短路了,立刻返回 true 了,^_^,这就是 我们常见的
?
a.onclick = function(e) {var event =e || window.event;}?思考题:下列代码返回什么
?
alert(''||false);alert(false || '');?ps:数据转换 boolean 值 js规则
undefined , null -> false
0 NaN -> false
'' -> false
其他都为 true
?
?