搜索
javascript - 如何理解js中的 var a="hello"; b = typeof a ==="string" && a; ?
大家讲道理
大家讲道理 2017-04-10 16:22:08
[JavaScript讨论组]

如何理解js中的
var a="hello";
b = typeof a ==="string" && a; ?
有没有其他的扩展性的或者类似的写法?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
黄舟

第2个表达式是个赋值语句,用括号把操作符的优先级表示出来,如下:

var b = ((typeof a) === 'string') && a;//题主的代码没有用var,建议声明变量时都用var,避免污染

((typeof a) === 'string') && a 的运算结果赋值给变量b

解释一下&&操作符:
&&操作符可以应用于任何类型的操作数,而不仅仅是布尔值。在有一个操作数不是布尔值的情况下,&&操作数不一定返回布尔值,此时它遵循下列规则:

1.如果第一个操作数是对象,则返回第二个操作数;
2.如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象;
3.如果两个操作数都是对象,则返回第二个操作数;
4.如果有一个操作数是null,则返回null;
5.如果有一个操作数是NaN,则返回NaN;
6.如果有一个操作数是undefined,则返回undefined。
(JavaScript高级程序设计3.5.3节)

(typeof a) === 'string'的结果为true
所以 b = true && a; 按照规则2,b = a

在js中,会经常利用&&||的特性进行赋值,算是比较巧妙地用法吧!

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

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