javascript - 这个到底是赋值语句还是判断语句?
PHP中文网
PHP中文网 2017-04-10 14:25:44
[JavaScript讨论组]

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

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

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

PHP中文网
PHP中文网

认证0级讲师

全部回复(5)
大家讲道理

首先你需要了解运算符的优先级,因为||的优先级高于=,所以先执行后面的操作。又由于逻辑运算符||的操作在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

如果是非布尔值的话是会直接返回判断真值的原值的,所以这样赋值是没有问题的。

ringa_lee

这个是利用了逻辑短路,A || B,如果 Atrue,则不执行 B
逻辑与也可以短路:

function someFunction(n){
    (n == 2) && (alert(123));
}
someFunction(2)//alert
someFunction(3)//no alert
阿神

和这两个问题是一样的

http://segmentfault.com/q/1010000000184950
http://segmentfault.com/q/1010000000364017

怪我咯

n || 5 的意思是:如果n是nullundefined或者布尔false的话,就返回5,否则返回n

这是一种简化的写法,很常用,目的是最到js代码长度最小,因为像if else这样的关键字是不能被压缩的

巴扎黑

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号