CNode

关于这段代码,为什么在浏览器环境和node环境运行不一致?

问答
RRenascence发布于9 年前最后回复9 年前2 回复3401 浏览0 收藏
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)

W
wp56610#1·9 年前

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)();执行的

参与回复
登录后即可参与回复。登录