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