我有点迷失为什么下面的代码会按照它的方式做。
对于以下表达式,我希望结果为 1,因为在文字的右侧我们实际上有一个 obj。
表达:
> { a : 1 }.a
结果铬:
Syntax error: Unexpect token .
结果 NodeJS
1
(另一个问题:为什么nodejs和chrome在这个(以及以下)上有所不同)
虽然表达式本身存在语法错误,但将其分配给变量仍然有效。
> var x = { a : 1 }.a; x;
结果:
1
现在在表达式周围使用 eval 在 Chrome 和 NodeJS 中确实有效
> eval({ a : 1 }.a)
结果 Chrome 和 Node
1
现在使用 eval 和基于字符串的表达式,这两个平台都不起作用
eval("{ a : 1 }.a")
结果铬:
SyntaxError: Unexpected token >
结果NodeJS:
... //REPL waits more code
最后括号解决了这一切,但为什么?
> eval("({ a : 1 }.a)")
结果:
Works everywhere