如何理解js中的
var a="hello";
b = typeof a ==="string" && a; ?
有没有其他的扩展性的或者类似的写法?
如何理解js中的
var a="hello";
b = typeof a ==="string" && a; ?
有没有其他的扩展性的或者类似的写法?
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
第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中,会经常利用
&&
和||
的特性进行赋值,算是比较巧妙地用法吧!