为什么javascript将函数中的(局部)变量视为全局(窗口)变量
Why is javascript treating in function (local) variables as global (window) variables?
我有一个javascript文件,其中包含函数内(本地)变量。例如,在下面的代码中有一些变量:countries、arr、india、usa、uae、australia、canada、kuwait等。当我启动我的网站时,所有这些变量都可以通过window.xyz访问(例如window.countries、window.usa等)。我真的很困惑为什么会发生这种情况。如果有人能帮我理解这一点,我将不胜感激。
MyApp.Helpers.LocationEducationHelper = function() {
function getPopularCountriesArray(){
// var me = this;
arr = [];
countries = MyApp.getAllCountries();
india = countries.get("IN");
usa = countries.get("US");
uae = countries.get("AE");
australia = countries.get("AU");
canada = countries.get("CA");
kuwait = countries.get("KW");
nz = countries.get("NZ");
pk = countries.get("PK");
russia = countries.get("RU");
saudiArabia = countries.get("SA");
southAfrica = countries.get("ZA")
gb = countries.get("GB");
arr.push(india, usa, gb, uae, canada, australia, nz, pk, kuwait, russia, saudiArabia, southAfrica);
return arr
};
return {
getPopularCountriesArray : getPopularCountriesArray
};};
添加var在每个变量之前。如果没有它,它将被视为全局
函数内部局部声明的变量,不将"var"视为全局变量。如果您想限制作用域,请使用"var"。
全球申报
var x = 4; //global variable
(function(){
console.log(x); //returns 4
})();
console.log(x); //returns 4
本地申报
(function(){
var y = 4; //local variable
console.log(y); //returns 4
})();
console.log(y); // Reference error y is not defined
本地无var
(function(){
z = 4; //global variable
console.log(z); //returns 4
})();
console.log(z); // returns 4
您可以这样重写它。
MyApp.Helpers.LocationEducationHelper = function() {
function getPopularCountriesArray(){
// var me = this;
var arr = [],
countries = MyApp.getAllCountries(),
india = countries.get("IN"),
usa = countries.get("US"),
uae = countries.get("AE"),
australia = countries.get("AU"),
canada = countries.get("CA"),
kuwait = countries.get("KW"),
nz = countries.get("NZ"),
pk = countries.get("PK"),
russia = countries.get("RU"),
saudiArabia = countries.get("SA"),
southAfrica = countries.get("ZA"),
gb = countries.get("GB");
arr.push(india, usa, gb, uae, canada, australia, nz, pk, kuwait, russia, saudiArabia, southAfrica);
return arr
};
return {
getPopularCountriesArray : getPopularCountriesArray
};};
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 从Javascript方法返回全局变量
- 访问jsrender模板中的全局javascript变量并更新它
- 在这种情况下,如何使变量全局可访问
- 尝试使在专用作用域中动态更改的变量全局化
- 如何从函数节点内部使变量全局.js
- 如何在phoneGap api中使javascript变量全局化
- 如何在phoneGap api中使javascript变量全局化
- JavaScript 需要帮助使变量全局化
- 当javascript中的条件变量(全局变量)发生变化时,停止循环
- 通过窗口方法使变量全局不起作用
- 如何声明局部变量全局
- 如何使javascript变量全局,并将其传递到函数ajax
- Javascript作用域变量(全局/局部)
- 在JavaScript中使数组变量全局化
- Javascript不能使变量全局化
- 在iAd Producer中设置变量全局