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中,这指的是当前对象…如果比较对比度,会非常混乱。