扫码关注官方订阅号
我经常在项目中看到这样的例子
function someFunction(n){ var data= n || 5; return data }
为什么或运算可以这样用来赋值呢?
认证0级讲师
首先你需要了解运算符的优先级,因为||的优先级高于=,所以先执行后面的操作。又由于逻辑运算符||的操作在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
expr1 || expr2
如果是非布尔值的话是会直接返回判断真值的原值的,所以这样赋值是没有问题的。
这个是利用了逻辑短路,A || B,如果 A 为 true,则不执行 B。 逻辑与也可以短路:
A || B
A
true
B
function someFunction(n){ (n == 2) && (alert(123)); } someFunction(2)//alert someFunction(3)//no alert
和这两个问题是一样的
http://segmentfault.com/q/1010000000184950http://segmentfault.com/q/1010000000364017
n || 5 的意思是:如果n是null、undefined或者布尔false的话,就返回5,否则返回n。
n || 5
null
undefined
false
5
n
这是一种简化的写法,很常用,目的是最到js代码长度最小,因为像if else这样的关键字是不能被压缩的
if
else
判断有没有传参n,如果n不存在,就把5赋值给变量data
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
首先你需要了解运算符的优先级,因为
||的优先级高于=,所以先执行后面的操作。又由于逻辑运算符||的操作在JavaScript中比较特殊,MDN上是这么写的:如果是非布尔值的话是会直接返回判断真值的原值的,所以这样赋值是没有问题的。
这个是利用了逻辑短路,
A || B,如果A为true,则不执行B。逻辑与也可以短路:
和这两个问题是一样的
http://segmentfault.com/q/1010000000184950
http://segmentfault.com/q/1010000000364017
n || 5的意思是:如果n是null、undefined或者布尔false的话,就返回5,否则返回n。这是一种简化的写法,很常用,目的是最到js代码长度最小,因为像
ifelse这样的关键字是不能被压缩的判断有没有传参n,如果n不存在,就把5赋值给变量data