Chrome开发者工具控制台的奇怪行为

Eug*_*nko 1 javascript google-chrome-devtools

如果您键入控制台

> new Object() 
Run Code Online (Sandbox Code Playgroud)

空的js对象将出现在控制台中并且是预期的,但是如果键入的话

> {}
Run Code Online (Sandbox Code Playgroud)

你得到 undefined

它很奇怪.不是吗?

Poi*_*nty 6

调用函数new始终会产生值.现在,你的第二行,

{}
Run Code Online (Sandbox Code Playgroud)

是一个空代码块,而不是对象文字.

尝试:

({})
Run Code Online (Sandbox Code Playgroud)

要么:

0,{}
Run Code Online (Sandbox Code Playgroud)

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

  • 这是一个涉及逗号运算符的表达式.还有其他方法可以做到:考虑`0?0:{}`或`0 || {}`或`true && {}`.关键是明确地开始表达. (2认同)