Javascript 中的变量使用总结

常用的变量声明有三种方式,听起来好像是“茴”字有三种写法....,其实不止三种。

var是古老的声明方式,let是 ES 6 新增的语句,const用于声明常量。不使用上面三个关键字其实也可以声明变量。

区别是什么?

一个测试:

在函数test()外部,test1test2test3变量是访问不到的,可见var的变量提升问题没有了,也许旧的浏览器还有。但是test4是可以访问到的,说明test4声明的全局变量。

上例函数声明语句function事实上是函数专用的声明方式,也可以这样:

对于不会再改变的常量,建议使用const关键字。

关于变量名问题,什么符号可以用做变量名?一般使用大小写英文字母a-z、数字0-9和下划线_,Javascipt 可以使用美元符号$。变量名不能以数字开头,其他都可以。不要使用$$$作变量名,因为这两个是选择器方法名。当然,不止这几种字符可以用,比如中文也可以做变量名,不过真没见过有人这么玩儿。

下一个问题,声明的变量保存在哪里?默认保存在window对象中。

当然,只有在函数外声明的变量或不使用关键词声明的变量才保存在window对象中,在函数内声明的变量不会保存在window中,只能在函数中访问,一会儿再说函数内变量的问题。

知道了变量的父级对象,可以使用 Javscript 的一个优秀的语言特性,按名访问变量,在 Java 语言里可是要使用反向才能做到。

按名访问变量可以在其他很多场景做更多的事。window对象保存着使用声明语句声明的变量,函数也都保存在 window 对象中。

注意类不行,类不属于任何对象。

下一个问题就是其他对象能不能保存变量,答案是肯定的。

所以非基本数据类型即引用类型都可以保存变量,可以理解为将变量或函数作为它们的属性或方法。这个特性可以让我们在编程时做非常多的事,例如多个同类元素都要一个变量保存不同的值。注意在声明变量时变量名不要与对象原有的属性名冲突都可以。如果没有赋值但是使用了某个对象属性时,会返回undefined

下一个问题,函数中声明的变量如何访问?答案是访问不到...

上例中,使用this关键字声明的b是可以访问到的,不过要将test()函数作为类来使用,即通过new关键字声明一下。但时这时变量a依然访问不到。这时函数test也不再是原来的用法。建议使用class关键字来声明类,这时类才具有其他更多特性。

最后一点经验,所有元素标签比较特殊,它们都是特殊的对象,有 3 个方法可以通过自定义属性来保存数据。

方法setAttribute用于设置自定义属性的值,getAttribute用来获取已经保存的值,hasAttribute用来判断有没有设置某个属性。不过这几个方法只能用来保存字符串属性。

(本文完)


微信公众号
码农老吴  |  星源工作室  |  开发月志  |  问题反馈
联系我们:wu@qross.io     手机/微信:18618171102
京 ICP 备 20027445 号
$(h1)!