我们用【F12】打个浏览器的控制台,在 console 面板里面输入下面的代码并回车
{ } + [ ] === 0
// true
为什么是 true ?其实上面的代码在js的执行里会被拆成如下的代码显示
{};
+[] === 0
// true
当 {} 对出现在语句最右侧的时候会被当成代码块执行,请看下面的代码
{ a = 1 } + [ ] + a === 1
// true
看到了么,{} 并不是作为一个对象来使用的,当然你会发现下面的写法也是对的
{ a: 1 } + [ ] === 0
// true
But,但是,请注意!下面的写法会报错
{ a: 1, b: 2 } + [ ] === 0
// Uncaught SyntaxError: Unexpected token :
Why? 以内 {} 不是对象,上面的代码会被翻译成下面这样
{
a: 1,
b: 2
};
+[ ] === 0
// Uncaught SyntaxError: Unexpected token :
PS:JS 竟然还有 a:1 这种写法 Orz