1:{key:value}["key"]
2:({key:value})["key"]
我想知道 JS 解释器如何处理上面的代码,以及为什么1不起作用,为什么2 works?
我假设您问这个问题是因为您在 JavaScript REPL(shell)中看到了这种效果。您使用的 JavaScript shell 假定前导“{”开始块语句而不是对象文字。
例如,如果您使用 Chrome 浏览器附带的 JavaScript 解释器,您会看到以下内容:
> {key:"value"}["key"]
["key"]
在这里,Chrome 将您输入的内容视为块语句,后跟表达式,该表达式是一个元素的数组,即字符串"key"
。所以它响应该表达式的结果,即数组["key"]
但并非所有 shell 都这样工作。如果您将解释器与 node.js 一起使用,则 #1will为你工作!
$ node
> {key:"value"}["key"]
'value'
>
在像 Chrome 这样的解释器中,您必须使用括号来告诉它您希望第一部分是对象文字。 (顺便说一句,这项技术保证在allshell,包括节点)。
EDIT
正如评论之一所指出的,如果您在实际脚本中的任何位置的表达式上下文中使用该构造,它将产生"value"
。它在 shell 中的使用看起来很混乱。
这一事实实际上在著名的瓦特视频作者:加里·伯恩哈特。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)