【问题标题】:How the parameter passed in IIFE works [duplicate]IIFE 中传递的参数如何工作[重复]
【发布时间】:2017-02-02 05:00:10
【问题描述】:

只是查看一些 js 代码文件,它的所有代码都是这样包装的:

(function(self) {

//..

})(typeof self !== 'undefined' ? self : this);

你能解释一下上面的javascript代码是什么意思吗:

什么是self,它来自哪里?

最后一行到底是什么(typeof self !== 'undefined' ? self : this);

【问题讨论】:

  • 这是一个立即调用的函数
  • selfbrowsers 中的全局变量,它引用全局对象。这只是检查该变量是否存在。如果是,则将其传递给函数。如果不是,则传递this,它在全局范围内也将引用全局对象。
  • @FelixKling 第二个self 因为第一个只是一个参数。
  • 立即调用函数表达式IIFE
  • @ibrahimmahrir:当然,我说的是最后一行。

标签: javascript iife


【解决方案1】:

console.log(self);

console.log(this);
(function(){

})();

这是 javascript 中IIFE 的语法(立即调用函数表达式)。

现在..

 (function(x){

    })(y);

现在第一个() 包含实际的匿名函数,第二个() 用于调用该函数。你传入的第二个会被第一个接收。

所以,

(function(self) {

//..

})(typeof self !== 'undefined' ? self : this);

typeof self !== 'undefined' 将检查self(浏览器全局对象)是否存在。如果它存在,则通过否则 this 对象的范围或全局范围被传递。

selfthis 将在根目录中提供相同的对象。

【讨论】:

    猜你喜欢
    • 2018-06-10
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 2018-08-02
    • 2018-08-01
    相关资源
    最近更新 更多