最开始的时候代码:
var a = "global";
function foo() {
console.log(this.a);
}
var obj1 = {
a: "local",
foo: foo
}
function doFoo(fn) {
fn();
}
doFoo(obj1.foo);
上述代码运行结果为:global,一切正常
代码修改后:
var a = "global";
function foo() {
console.log(this.a);
}
var obj1 = {
a: "local",
foo: foo
}
(function doFoo(fn) {
fn();
})(obj1.foo);
当我把上述doFoo执行函数改为立即执行函数之后,报错Uncaught TypeError: {(intermediate value)(intermediate value)} is not a function
代码再次修改,直接将参数赋值为一个变量testValue
var a = "global";
function foo() {
console.log(this.a);
}
var obj1 = {
a: "local",
foo: foo
}
var textVaule = obj1.foo;
(function doFoo(fn) {
fn();
})(textVaule);
运行结果为:global,又变正常了。
为什么会这样子呢,拿到立即执行函数传参数不能传递函数,只能传递变量?
相关分类