为什么这里的立即执行函数报错了

最开始的时候代码:


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,又变正常了。

为什么会这样子呢,拿到立即执行函数传参数不能传递函数,只能传递变量?


蝴蝶刀刀
浏览 545回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript