我经常在项目中看到这样的例子
function someFunction(n){
var data= n || 5;
return data
}
为什么或运算可以这样用来赋值呢?
判断有没有传参n,如果n不存在,就把5赋值给变量data
n || 5
的意思是:如果n是null
、undefined
或者布尔false
的话,就返回5
,否则返回n
。
这是一种简化的写法,很常用,目的是最到js代码长度最小,因为像if
else
这样的关键字是不能被压缩的
和这两个问题是一样的
http://.com/q/1010000000184950
http://.com/q/1010000000364017
首先你需要了解运算符的优先级,因为||
的优先级高于=
,所以先执行后面的操作。又由于逻辑运算符||
的操作在JavaScript中比较特殊,MDN上是这么写的:
expr1 || expr2
:Returns expr1 if it can be converted to true; otherwise, returns expr2. Thus, when used with Boolean values, || returns true if either operand is true; if both are false, returns false. - Logical Operators
如果是非布尔值的话是会直接返回判断真值的原值的,所以这样赋值是没有问题的。
这个是利用了逻辑短路,A || B
,如果 A
为 true
,则不执行 B
。
逻辑与也可以短路:
function someFunction(n){
(n == 2) && (alert(123));
}
someFunction(2)//alert
someFunction(3)//no alert