为什么如果我写下面的脚本,变量f的值是2016?
var year = 2016;
var g = 'foo';
var f = typeof g != 'undefined' && year;
Run Code Online (Sandbox Code Playgroud)
因为&&
JavaScript中的一个非常有趣的运算符:与其他一些语言不同,它不会产生true
或false
(必然).相反,结果&&
是它的左操作数的值,如果它是假的,1或其右操作数的值否则.
它的工作原理如下:
typeof g != 'undefined'
).year)
并将其作为操作的结果.以下为您的示例:
typeof g != 'undefined'
.既然typeof g
是'string'
,'string' != 'undefined'
那就是true
.true
不是假的,所以我们不要停止.year
并制作结果.因此f
获得year
分配给它的2016(价值).
&&
有一个同样有趣的堂兄,||
我写了一篇关于这种行为的博客文章:JavaScript的奇怪强大的OR运算符(||)
1 假值是false
在被视为布尔值时强制使用的值.该falsy值0
,""
,NaN
,null
,undefined
,当然还有'假的.
2 Truthy值是非虚假的值(true
当像布尔值一样处理时它们强制).
注意:当您使用它们以布尔值的行为方式是不是如果他们的行为以同样的方式比较他们布尔值."foo"
是truthy价值,但"foo" == true
并"foo" === true
都false
.
归档时间: |
|
查看次数: |
43 次 |
最近记录: |