扫码关注官方订阅号
var v = v || 10; var v = 0 || 10; var v = 5 || 10; var v = null || 10;
依次执行这四个语句,得到V的值分别是10、10、5、10。新手不太理解为什么,求解,感谢!
认证0级讲师
||为短路或,A||B的执行规则为:
1.A为true取A;
2.A为false取B
var v = v || 10;
执行顺序为先执行 var v (变量声明提升);再执行v||10,此时v为undefined,转化为布尔值为false,则取10,即将10赋予v。
var v
v||10
v
undefined
false
10
var v = 0 || 10; var v = 5 || 10; var v = null || 10;
这三个自己分析一下,应该可以了。
补充一点。依次执行的话,同作用域内已声明过的变量是不会被重新声明的,即后三个var a是不会被执行的,只会执行 v = ***。
var a
v = ***
expr1 || expr2
如果expr1能转换成true则返回expr1,否则返回expr2. 因此,在boolean环境(在if的条件判断中)中使用时, 二者操作结果中只要有一个为true,返回true;二者操作结果都为false时返回false.
能够转换为false的表达式有:null,0,""和undefined.
出处:MDN - 逻辑运算符
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
||为短路或,A||B的执行规则为:
1.A为true取A;
2.A为false取B
var v = v || 10;
执行顺序为先执行
var v(变量声明提升);再执行v||10,此时v为undefined,转化为布尔值为false,则取10,即将10赋予v。这三个自己分析一下,应该可以了。
补充一点。依次执行的话,同作用域内已声明过的变量是不会被重新声明的,即后三个
var a是不会被执行的,只会执行v = ***。如果expr1能转换成true则返回expr1,否则返回expr2. 因此,在boolean环境(在if的条件判断中)中使用时, 二者操作结果中只要有一个为true,返回true;二者操作结果都为false时返回false.
出处:MDN - 逻辑运算符