3

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

(function(){

    var $a;   
    $a = Su.$a

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

})();

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

但我不想打电话Su.$a,我想打电话$a

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

4

2 回答 2

6

不。

thisMDN / thisOperator描述的一些东西设置,但简而言之:

  • 全局对象,在顶级范围内
  • obj, 执行时obj.func(...)
  • obj, 当执行func.apply(obj, [...])orfunc.call(obj, ...)
    或全局对象时, if objis nullorundefined
  • func.prototype调用时带有原型的新对象new func(...)
  • 事件目标,如果elem.addEventListener('event', func, ...)event被触发elem

较新的 JavaScript 中存在一些差异和添加,但仅此而已。 this与范围无关function

于 2012-08-28T06:16:23.583 回答
5

不,它们是不同的。

var $a,则$a是函数范围内的局部变量。

但是如果你使用this.$a,因为这是一个自执行函数,thiswindow这种情况下,this.$a与 相同window.$a,所以你使用的是全局变量$a

于 2012-08-28T03:17:50.933 回答