在 javascript 中,我在执行以下操作时遇到错误:
{O: 'Ida', I: 'Regreso'}['O']
有谁知道为什么吗?
最佳答案
因为 {O: 'Ida', I: 'Regreso'}
在此上下文中不是对象,它是一个带有标签 O
的 block ,后跟字符串文字表达式 'Ida'
,然后是逗号运算符,还有另一个标签(此时是语法错误)和另一个字符串文字表达式。
(这是常见的WAT的来源,[] == {}
vs {} == []
,在第一种情况下,它是“数组文字等于对象字面量”,第二个是“空 block 等于数组字面量”(这是一个语法错误))
原因是由于解析上下文,{O: 'Ida', I: 'Regreso'}
仅当放置在表达式上下文中时才会被视为对象。最常见的方法之一是用括号将其括起来,如下所示:
console.log(({O: 'Ida', I: 'Regreso'})['O'])
关于javascript - 获取哈希值而不将其分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40250030/