为什么这些javascript表达式会意外地工作

为什么这些javascript表达式会意外地工作,javascript,syntax,Javascript,Syntax,有一些javascript语法,我不明白它们为什么会起作用 一, 二, 三, 在所有这些情况下,将对比较运算符左侧和右侧的对象执行参考检查。这将返回false,因为虽然它们看起来相同,但实际上是不同的实例。第一个和第三个:无法将数组和对象与=进行比较。第二:自动插入分号。保存为#2(参见Tushar的评论) ({} === {}) // returns false function foo() { return { foo: 'bar'

有一些javascript语法,我不明白它们为什么会起作用

一,

二,

三,


在所有这些情况下,将对比较运算符左侧和右侧的对象执行参考检查。这将返回false,因为虽然它们看起来相同,但实际上是不同的实例。

第一个和第三个:无法将数组和对象与
=
进行比较。第二:自动插入分号。保存为#2(参见Tushar的评论)
({} === {}) // returns false 
function foo() {
       return
       {
          foo: 'bar'
       }
    }

    function bar() {
       return {
          foo: 'bar'
       }
    }

(typeof foo() === typeof bar()) //return false again
([1,2,3] == [1,2,3]); //very interesting false again