关于这段代码,为什么在浏览器环境和node环境运行不一致?
发布于 8 年前 作者 Renascence 2916 次浏览 来自 问答
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 是我粗心了~谢谢

回到顶部