关于这段代码,为什么在浏览器环境和node环境运行不一致?
function foo() {
console.log(this.a)
}
var a = 2
var o = {
a: 3,
foo : foo,
}
var p = {
a: 4
}
o.foo() // 3
(p.foo = o.foo)()
node环境下会报错: o.foo(…) is not a function 为什么没有找到全局变量 o 的foo属性呢?
2 回复
function foo() { console.log(this.a) }
var a = 2 var o = { a: 3, foo : foo, } var p = { a: 4 } o.foo() ;// 3 这里加一个分号就好,论 为什么需要良好的编程习惯, (p.foo = o.foo)()
原因是由于() 是表示函数执行,这里你没有加分号,解析为o.foo()(p.foo=o.foo)();执行的
@wp56610 是我粗心了~谢谢