IIFE中传递的参数如何工作

时间:2017-02-02 05:00:10

标签: javascript iife

只是查看一些js代码文件,其中包含所有代码:

(function(self) {

//..

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

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

什么是self以及它来自哪里?

最后一行实际上是(typeof self !== 'undefined' ? self : this);

1 个答案:

答案 0 :(得分:0)

*org.gradle.tooling.BuildException: Could not run build action using Gradle distribution 'https://services.gradle.org/distributions/gradle-3.3-bin.zip'.
*
For InteliJ
*Cause: startup failed: build file 'C:\Users\sayyad.ghazi\Desktop\gob\gobblin-master\gobblin-restli\gobblin-throttling-service\gobblin-throttling-service-api\build.gradle': 1: unexpected token: .. @ line 1, column 1. ../../api.gradle ^ 1 error*

console.log(self);

console.log(this);

这是javascript(Immediatelyinvoked函数表达式)中(function(){ })(); 的语法。

现在......

IIFE

现在第一个 (function(x){ })(y); 包含实际的匿名函数,第二个()用于调用该函数。你先通过第二次收到的是什么。

所以,

()

(function(self) { //.. })(typeof self !== 'undefined' ? self : this); 将检查typeof self !== 'undefined'(浏览器全局对象)是否存在。如果其现有传递,则传递self对象或全局范围的范围。

thisself将在root提供相同的对象。