v客学院吧 关注:57贴子:696
  • 1回复贴,共1

javascript中加var和不加var的区别 你真的懂吗

只看楼主收藏回复

我们先来看下var关键字的定义和用法
var 语句用于声明变量。
JavaScript 变量的创建也叫作"声明"一变量:


IP属地:湖南1楼2017-11-23 17:15回复
    大家都看了很多文章,都说避免隐式声明全局变量,就是说声明变量前必须加'var',那加了'var'和不加'var'到底有啥区别呢?

    明白了吧,你声明一个全局变量其实是给'window'对象增加了一个属性,下面一段代码有相同效果

    都是为'window'对象增加了属性,一个可以删除,一个不能删除。但是加上'var'就可以作用域相关了,不加'var'始终都是在为'window'对象动态添加属性,以下代码为证

    说到这,认真思考的人现在必然有个疑问, 为啥隐式声明的全局变量可以删除,显式声明的全局变量就无法删除?
    原因是"delete 不可以删除那些可配置性为false的属性" ,某些内置对象的属性是不可配置的,比如通过变量声明或者函数声明创建的全局对象的属性,以下代码为证

    那这样不就明白了,通过'var'声明的全局变量,其实际上是为'window'对象增加了一个不可配置的属性, 而不加'var'声明的全局变量,其实际上是为'window'对象增加了一个可以配置的属性。
    注意了,以上使用window的地方,window都可以用this代替,如:


    IP属地:湖南3楼2017-11-23 17:22
    回复