为了账号安全,请及时绑定邮箱和手机立即绑定

声明没有var关键字的变量

声明没有var关键字的变量

慕哥9229398 2019-09-02 09:06:51
在w3schools写道:如果声明变量而不使用“var”,则变量始终变为GLOBAL。在函数内声明全局变量是否有用?我可以想象在某个事件处理程序中声明一些全局变量,但它有什么用呢?更好地使用RAM?
查看完整描述

3 回答

?
慕村9548890

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严格模式下,对未声明变量的赋值(例如前面代码段中的两个反模式)将引发错误。

查看完整回答
反对 回复 2019-09-02
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

全局变量的唯一用途是,如果您需要全局访问它们。在这种情况下,您应该使用var函数外部的关键字来声明它们,以明确您确实要创建全局变量,并且不要忘记var在尝试声明局部变量时。

通常,您应该尝试对代码进行范围调整,以便在全局范围内尽可能少地使用代码。您在脚本中使用的全局变量越多,您在另一个脚本中使用它的可能性就越小。

通常,函数中的变量应该是局部变量,以便在退出函数时它们消失。


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 603 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信