基础算法
数据库
Javascript
HTML 编程
SVG
附录
常用的变量声明有三种方式,听起来好像是“茴”字有三种写法....,其实不止三种。
var
是古老的声明方式,let
是 ES 6 新增的语句,const
用于声明常量。不使用上面三个关键字其实也可以声明变量。
区别是什么?
var
和let
用来声明变量。const
用来声明不可改变的常量,即一经声明不能再改变。let
为了解决var
的变更提升问题,但是现在好像没有这问题了。一个测试:
在函数test()
外部,test1
、test2
和test3
变量是访问不到的,可见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
用来判断有没有设置某个属性。不过这几个方法只能用来保存字符串属性。
(本文完)