var a = 1; var foo = { a: 2, bar: function () { return this.a; } }; console.log(foo.bar()); //这个很容易理解 bar函数的this绑定在foo对象上 console.log((foo.bar)()); //这个加不加括号都等同于上面 console.log((foo.bar=foo.bar)()); //这个可能比较难理解 因为里面是一个赋值运算 表达式返回的是foo.bar这个值 那么这个值是什么呢 其实是一个匿名函数 function () { return this.a; } 所以 第三个console.log 可以等价为 console.log((function () { return this.a; })()) 故打印出来就是全局上的a变量了 最后留个问题 console.log((a=foo.bar)()) 这个打印出的结果是什么呢
1 1

相关推荐

牛客网
牛客企业服务