Javascript ';这';在一个生命内|与局部范围相同?

Javascript ';这';在一个生命内|与局部范围相同?,javascript,iife,Javascript,Iife,如果我有生命,这是指局部范围吗 (function(){ var $a; $a = Su.$a // this.$a = Su.$a; // can I replace with this })(); 我这么问是因为我需要在我的生活中到处都能买到的Su.$a 但是我不想叫Su.$a,我想叫$a 是说this.$a与var$a处于顶级作用域时的说法相同?不,它们是不同的 var$a,则$a是函数范围内的局部变量 但是如果您使用this.$a,因为这是一个自执行

如果我有生命,这是指局部范围吗

(function(){

    var $a;   
    $a = Su.$a

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

})();
我这么问是因为我需要在我的生活中到处都能买到的
Su.$a

但是我不想叫
Su.$a
,我想叫
$a


是说
this.$a
与var$a处于顶级作用域时的说法相同?

不,它们是不同的

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

但是如果您使用
this.$a
,因为这是一个自执行函数,
this
窗口
,在这种情况下,
this.$a
窗口.$a
相同,因此您使用的是全局变量
$a

由以下几点设置,由描述,但简而言之:

  • 全局对象,位于顶级范围
  • obj
    ,执行
    obj.func(…)
  • obj
    ,当执行
    函数应用(obj,[…])
    函数调用(obj,…)

    或者全局对象,如果
    obj
    null
    未定义
  • 调用
    新函数(…)
  • 如果
    elem.addEventListener('event',func,…)
    event
    elem

在较新的JavaScript中有一些差异和添加,但基本上就是这样
这个
函数
作用域无关。

是否有任何方法引用本地作用域,或者这只是多余的,因为您“在”本地作用域中,我只是想为了一致性起见,可能会有一个way@HiroProtagonist不,没有。你可以做相反的事情--
使用(obj)
将它添加到范围链中--但它是高度不推荐的。PHP有这个和self分别引用当前的对象和类…但在js中没有等价物。我想。从来没有想过它,但奇怪的是它引用了调用“机制”…在经典OO中,这指的是当前对象…如果比较对比度,会非常混乱。