javascript - IIFE 中的 'this' |与本地范围相同?

标签 javascript iife

如果我有一个 IIFE,这是否指的是本地范围?

(function(){

    var $a;   
    $a = Su.$a

    // this.$a = Su.$a; // can I replace with this

})();

我问是因为我需要 Su.$a 在我的 IIFE 中随处可用。

但是我不想调用Su.$a,我想调用$a

是说 this.$a 当 var 是顶级作用域时说 var $a 一样吗?

最佳答案

没有。

this 由一些东西设置,由 MDN / this Operator 描述,但简而言之:

  • 全局对象,在顶级范围
  • obj,当执行obj.func(...)
  • obj,当执行func.apply(obj, [...])func.call(obj, ...)
    或全局对象,如果 objnullundefined
  • 在调用 new func(...) 时,一个带有原型(prototype) func.prototype 的新对象
  • 事件目标,如果 elem.addEventListener('event', func, ...)eventelem 上触发/li>

较新的 JavaScript 中有一些差异和新增内容,但仅此而已。 thisfunction 作用域无关。

关于javascript - IIFE 中的 'this' |与本地范围相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12151226/

相关文章:

javascript - 如何复制 `<div contentEditable="true">` to ` &lt;textarea&gt;` 而不将其删除?

javascript - JS过滤数组但如果存在反向则不过滤

javascript - 模块模式中的函数声明与函数表达式

javascript - Javascript 中 IIFE 的作用域

javascript - 将我的 gulpfile 包装在立即调用的函数表达式中

Javascript - 这是一个好习惯吗?

javascript - 如果我没有填写 Angular 响应式(Reactive)表单中的所有详细信息,表单会出现错误

javascript - 为什么 noautohide 在 XUL 面板中不起作用?

javascript - 如何克隆过滤后的 jQuery 对象?

javascript - bundle 中包含一个 IIFE 模块