我正在阅读一篇文章,说这{}是一个有效的JavaScript程序.
我试过了,它工作正常.
然后我尝试了这个并且它有效:
{name:'Lord Stark'} <---整个程序(不将其分配给变量或任何东西)
但后来我尝试了以下内容,并在逗号中引发了错误.
{name:'Lord Stark',reignsOver:'Winterfell'} <---这又是整个节目
我的问题是,为什么具有多个属性(以及逗号)的普通对象返回错误,除非在只有一个条目的对象不分配给变量时?
小智 7
{} 是一个空块.
{name: 'Lord Stark'} 是一个带有标签的块和一个字符串(它什么都不做).
{name: 'Lord Stark', reignsOver: 'Winterfell'}是一个块,它再次以标签开始,然后是一个不会做任何事情的字符串,然后是一个逗号运算符,然后是一个未定义的变量reignsOver,然后是冒号,这是一个无效的语法.
在{}将仅在表达上下文被解释为对象,如var x = {name: 'Lord Stark', reignsOver: 'Winterfell'};.
请注意,控制台可能会运用一些智能并尝试弄清楚您在做什么,并可能将{a: 1, b:2}"正确"作为对象处理.要查看某个块是如何执行的,您可以尝试输入if (1) {name: 'Lord Stark', reignsOver: 'Winterfell'}.
你引用的文章并不完全正确:
花括号表示这是一个对象,它可以包含大括号内的其他对象.信不信由你这是一个有效的JavaScript程序.如果你运行它,它会创建一个空对象,当程序结束时它会立即消失.
实际上,形式的独立JS程序{}是不是一个对象,它是一个空块.
一些参考:
http://www.ecma-international.org/ecma-262/6.0/#sec-block
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/block
HTTPS: //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/label
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |