扫码关注官方订阅号
如何理解js中的 var a="hello"; b = typeof a ==="string" && a; ?有没有其他的扩展性的或者类似的写法?
光阴似箭催人老,日月如移越少年。
第2个表达式是个赋值语句,用括号把操作符的优先级表示出来,如下:
var b = ((typeof a) === 'string') && a;//题主的代码没有用var,建议声明变量时都用var,避免污染
把((typeof a) === 'string') && a 的运算结果赋值给变量b。
((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
(typeof a) === 'string'
true
b = true && a
b = a
在js中,会经常利用&&和||的特性进行赋值,算是比较巧妙地用法吧!
||
b = (typeof a === 'string') ? a : false;
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
第2个表达式是个赋值语句,用括号把操作符的优先级表示出来,如下:
把
((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中,会经常利用
&&
和||
的特性进行赋值,算是比较巧妙地用法吧!