san*_*hez 3 javascript console casting
在Chrome控制台中输入:
{}[true] // [true] (object)
!!{}[true] // false (boolean)
Run Code Online (Sandbox Code Playgroud)
当{} [true]是什么时,为什么!! {} [true]不正确?
你是如何评价的{}[true]?实际上它是undefined因为空对象没有名为的属性'true'.很明显,事实undefined并非如此true.
UPD:我在谷歌Chrome开发者工具中检查了它...
{}[true] // [true]
!!{}[true] // false
console.log({}[true]) // undefined
Run Code Online (Sandbox Code Playgroud)
第一行是[true]因为涉及2个陈述.第一个是空块({}),第二个是带有一个元素的数组(true).相比之下,第二行评估为表达式(以及第三行中的参数),{}此处不再是块而是空对象.
假设这些陈述是独立的:
{}[true] 被解释为
{} // empty block
[true] // array literal expression
Run Code Online (Sandbox Code Playgroud)
因此,如果在控制台中键入此内容,则会打印最后一个语句的结果,这是一个包含一个元素的数组,即布尔值true.
!!{}[true]另一方面,它被解释为访问'true'空对象的属性.这将返回undefined并在转换为false布尔值时转换为.
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |