【问题标题】:strange behavior of Chrome Developer Tools ConsoleChrome 开发者工具控制台的奇怪行为
【发布时间】:2012-03-23 00:53:52
【问题描述】:

如果你在控制台输入

> new Object() 

空的js对象会出现在控制台中,这是意料之中的,但是如果你输入

> {}

你会得到undefined

这很奇怪。不是吗?

【问题讨论】:

    标签: javascript google-chrome-devtools


    【解决方案1】:

    使用new 调用函数总是会产生一个值。现在,你的第二行,

    {}
    

    是一个空代码块,而不是一个对象字面量。

    试试:

    ({})
    

    或:

    0,{}
    

    控制台将您键入的行解析为语句,而不是表达式。因此,语句开头的大括号是块分隔符,而不是对象文字的开头。通过包含其他标记来强制解析器解析表达式,您可以开始一个对象字面量。

    【讨论】:

    • 嗯。现在我明白了,这就是为什么在数组的情况下,两种方式都是相同的(new Array() 或只是 [])。但是 js 是如何解释这个构造 0,{} 的呢?
    • 这是一个包含逗号的表达式。还有其他方法可以做到这一点:考虑0 ? 0 : {}0 || {}true && {}。关键是明确地开始一个表达式。
    猜你喜欢
    • 1970-01-01
    • 2011-05-11
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    相关资源
    最近更新 更多