3 回答
TA贡献1884条经验 获得超4个赞
忘记var时的副作用
隐含全局变量和明确定义的变量之间存在一个细微差别。区别在于使用delete运算符取消定义这些变量的能力:
•无法删除使用var创建的全局变量(在任何函数之外的程序中创建的全局变量)。
•可以删除在没有var的情况下创建的隐含全局变量(无论是否在函数内创建)。
这表明隐含的全局变量在技术上不是真正的变量,但它们是全局对象的属性。可以使用delete运算符删除属性,而变量不能:
// define three globals
var global_var = 1;
global_novar = 2; // antipattern
(function () {
global_fromfunc = 3; // antipattern
}());
// attempt to delete
delete global_var; // false
delete global_novar; // true
delete global_fromfunc; // true
// test the deletion
typeof global_var; // "number"
typeof global_novar; // "undefined"
typeof global_fromfunc; // "undefined"
在ES5严格模式下,对未声明变量的赋值(例如前面代码段中的两个反模式)将引发错误。
TA贡献1770条经验 获得超3个赞
全局变量的唯一用途是,如果您需要全局访问它们。在这种情况下,您应该使用var
函数外部的关键字来声明它们,以明确您确实要创建全局变量,并且不要忘记var
在尝试声明局部变量时。
通常,您应该尝试对代码进行范围调整,以便在全局范围内尽可能少地使用代码。您在脚本中使用的全局变量越多,您在另一个脚本中使用它的可能性就越小。
通常,函数中的变量应该是局部变量,以便在退出函数时它们消失。
添加回答
举报