标签: iife

模块模式是否需要使用 IIFE?

在 Udacity 课程中,它提到了关于模块模式的相互矛盾的事情:

模块模式需要使用 IIFE

模块模式的核心是利用范围、闭包和(通常)IIFE。

那么,如果我理解正确的话,模块模式需要使用闭包,但是闭包是否需要位于 IIFE 中?

javascript iife

1
推荐指数
1
解决办法
1712
查看次数

如何获得IIFE的返回值?

我在文件中有以下 IIFE iife.js

(function() {
    return "Hello World!";
}());
Run Code Online (Sandbox Code Playgroud)

我想在另一个文件中得到这个函数的结果:

var result = require("./iife");
console.log(result);
Run Code Online (Sandbox Code Playgroud)

result{}而不是Hello World!

如何从另一个文件访问 IIFE 的返回值,最好不要更改中的代码iife.js

javascript iife

1
推荐指数
1
解决办法
54
查看次数

为什么 let 变量可以在 IIFE 中访问而 var 却不能?

此 IIFE 代码能够访问计数

let count = 0;
(function immediate() {
  if (count === 0) {
    let count = 1;
    console.log(count);
  }
  console.log(count);
})();
Run Code Online (Sandbox Code Playgroud)

但为什么在这种情况下count是未定义的呢?

var count = 0;
(function immediate() {
  if (count === 0) {
    var count = 1;
    console.log(count);
  }
  console.log(count);
})();
Run Code Online (Sandbox Code Playgroud)

javascript iife

1
推荐指数
1
解决办法
251
查看次数

Javascript:如何命名IIFE

我正在使用javascript制作图像滑块插件!是的...我很无聊
,我希望它立即开始,所以我试图像jQuery源代码中那样立即调用函数表达式(IIFE):

(function blahBlahBlah(someJquery, thing, lalala, jquery){
 //You could have no parameters if you'd wanted but for the sake of this question I just added some gibberish...
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

我试图制作一个像这样的立即调用函数表达式(IIFE)并失败了::),这就是我尝试过的方法:

(function blahBlahBlah(someNames, someThing, lalala, Me){

})(MyName);
Run Code Online (Sandbox Code Playgroud)

并失败,但是当我用window替换最后一个参数时它可以工作吗?
我什至尝试了像这样的左侧变量:

(function blahBlahBlah(someNames, someThing, lalala, Me){
 MyName = window;
})(MyName);
Run Code Online (Sandbox Code Playgroud)

为什么要这样做以及如何获得想要的效果?在此先感谢,-Millzie。

javascript jquery self-invoking-function iife

0
推荐指数
1
解决办法
2149
查看次数

为什么这段代码不起作用?

我在这里嘲笑了一些代码

var common = common || {};

(function(NAMESPACE) {

  NAMESPACE = {
    isIE: function() {
        return true;
    }
  };

  main();

})(common);

function main() {
    console.log(common.isIE());
  return 'Hello, World!';
}
Run Code Online (Sandbox Code Playgroud)

我想了解一些事情,

1)为什么这不起作用,我想这与确定范围如何"决定"和IIFE有关,但并不完全确定.

2)如何使这个代码工作?

javascript scope iife

0
推荐指数
1
解决办法
68
查看次数

相同的IIFE,不同的js文件

我在我正在构建的网页中有3个不同的脚本,一切正常.

但是,在我了解了IIFE的优点之后,我试图将我的所有脚本包装在一个IIFE中,但它无法正常工作.控制台上出现错误:'Uncaught SyntaxError:意外的输入结束'refeering script-1.js.

所以,我有类似的东西:

<script type='text/javascript' src='...script-1.js'></script>
<script type='text/javascript' src='..script-2.js'></script>
<script type='text/javascript' src='script-3.js'></script>
Run Code Online (Sandbox Code Playgroud)

我正在做的是:在script-1.js上我启动了这样的代码

(function() {

//....rest of javaScript code script-1
Run Code Online (Sandbox Code Playgroud)

在script-3.js上,我结束了这样的代码:

//....rest of the code script-3

})();
Run Code Online (Sandbox Code Playgroud)

1)现在,第一个问题是:这可能吗?在同一个IIFE中包装不同的js文件?理论上似乎是,但我不确定.

2)然后,如果有可能,我做错了什么?

我知道对你们大多数人来说这似乎很基本但我会很感激一些反馈:)

javascript iife

0
推荐指数
1
解决办法
46
查看次数

在 JavaScript 中分配变量名的匿名函数

有人能解释我出去,如果下面的代码片段代表匿名函数或

var alpha = (function(){ 

    /*
        private space
    */

    return{
        //Some Code Here ...

    }
})();
Run Code Online (Sandbox Code Playgroud)

这是匿名函数吗?这对我来说看起来像是匿名函数的结构,但我读到匿名函数是一个没有名字的函数。在这里,我认为 alpha(variable) 是分配给函数的名称,因此与概念相矛盾。

我知道它是否会是:

(function(){ 

    return{
        //Some Code Here ...

    }

})();
Run Code Online (Sandbox Code Playgroud)

那么这将是Anonymous Function (self invoking) 或IIFE

此外,以下是一个简单的函数,但不是匿名函数,因为 beta 被分配给该函数(如我上面的示例)。所以,如果这不是匿名函数(因为 beta 指向函数并代表它),那么我之前的函数(alpha 指向函数)怎么可能是匿名的?此外,自调用是额外的部分。我相信,仅仅因为一个函数是自调用的并不能使它成为匿名的

var beta = function(){
    //Some code 
}
Run Code Online (Sandbox Code Playgroud)

有人可以澄清我吗?

javascript function anonymous-function iife

0
推荐指数
1
解决办法
604
查看次数

在IIFE中声明的Javascript链式变量赋值获得全局可见性?

最近被问到以下JavaScript代码会导致什么,正确的答案让我困惑:

(function () {
    var a = b = 5;
})();
console.log(b);
Run Code Online (Sandbox Code Playgroud)

我原本以为这会打印undefined但实际打印5.

根据我的理解,IIFE(立即调用的函数表达式)中定义的所有变量在其范围之外应该是可见的.这些变量声明的排序b在其范围之外a是如何显示的,而在其范围之外是不可见的?

javascript var iife

0
推荐指数
1
解决办法
65
查看次数

如何导出 es6 IIFE?

const renderTask = (task) => {
  if (task) {
    const li = `<div class="li"><span><input type="checkbox">${task.description}</span><svg height="15" width="15" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 5v.01M12 12v.01M12 19v.01M12 6a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z" />
          </svg></div>`;
    ul.innerHTML += li;
  }
};

renderTask();

export { renderTask as default };
Run Code Online (Sandbox Code Playgroud)

上面的代码运行得很好,但是当我将其重构为下面的代码时,我收到一个 eslint 错误,指出Parsing error: …

javascript iife es6-modules

0
推荐指数
1
解决办法
1198
查看次数

所有功能都在IIFE表达式中吗?

如果(function foo(){})是一个表达式,由于'context'为"(括号)"是一个分组运算符,分组运算符只能包含一个表达式.

这导致了这个问题,您能否在IIFE中声明一个函数,或者它仍然算作一个函数表达式?

javascript function function-declaration function-expression iife

-1
推荐指数
1
解决办法
78
查看次数

当我将IIFE的类型记录到控制台时,它是一个对象而不是一个函数,为什么?

我有一个返回对象的IIFE.在我的app.js文件中,我将其添加到index.html中的脚本标记中,我登录到我的IIFE的控制台类型,它是一个对象.它不应该是一个功能吗?为什么typeof返回一个对象?

这是app.js中的IIFE:

var UIController = (function() {

  var DOMstrings = {
    inputType: '.add__type',
    description: '.add__description',
    value: '.add__value',
    addBtn: '.add__btn'
  };

  return {
    getInput: function() {
      // return an object containing all values from UI elements
      return {
        type: document.querySelector(DOMstrings.inputType).value, // will be either income or expense
        description: document.querySelector(DOMstrings.description).value, // description of transaction
        value: document.querySelector(DOMstrings.value).value // value of transaction
      };
    },
    getDOMStrings: function() {
      return DOMstrings;
    }
  };

})();

console.log(typeof UIController);
Run Code Online (Sandbox Code Playgroud)

javascript iife

-1
推荐指数
1
解决办法
95
查看次数