首页 > 这个到底是赋值语句还是判断语句?

这个到底是赋值语句还是判断语句?

我经常在项目中看到这样的例子

function someFunction(n){
    var data= n || 5;
    return data
}

为什么或运算可以这样用来赋值呢?


判断有没有传参n,如果n不存在,就把5赋值给变量data


n || 5 的意思是:如果n是nullundefined或者布尔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,如果 Atrue,则不执行 B
逻辑与也可以短路:

function someFunction(n){
    (n == 2) && (alert(123));
}
someFunction(2)//alert
someFunction(3)//no alert
【热门文章】
【热门文章】