javascript - 执行下面的语句后,V的值为什么是这样?
PHP中文网
PHP中文网 2017-04-11 11:16:50
[JavaScript讨论组]
var v = v || 10; 

var v = 0 || 10; 

var v = 5 || 10; 

var v = null || 10; 

依次执行这四个语句,得到V的值分别是10、10、5、10。
新手不太理解为什么,求解,感谢!

PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
黄舟

||为短路或,A||B的执行规则为:

  • 1.A为true取A;

  • 2.A为false取B

    var v = v || 10;

执行顺序为先执行 var v (变量声明提升);再执行v||10,此时vundefined,转化为布尔值为false,则取10,即将10赋予v

var v = 0 || 10; 
var v = 5 || 10; 
var v = null || 10;

这三个自己分析一下,应该可以了。


补充一点。依次执行的话,同作用域内已声明过的变量是不会被重新声明的,即后三个var a是不会被执行的,只会执行 v = ***

迷茫
expr1 || expr2

如果expr1能转换成true则返回expr1,否则返回expr2. 因此,在boolean环境(在if的条件判断中)中使用时, 二者操作结果中只要有一个为true,返回true;二者操作结果都为false时返回false.

能够转换为false的表达式有:null,0,""和undefined.

出处:MDN - 逻辑运算符

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

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