变量
前言
在说js的变量之前,先说一下几个概念,声明变量和初始化变量。
声明变量就是声明变量的数据类型,初始化变量就是第一次给变量赋值。
而声明变量的同时并且初始化变量,这就叫做定义一个变量。或者延迟初始化也可以,即先声明后初始化,也叫定义。总之,定义这个概念包括声明和初始化,也就是说,定义包含了声明变量和初始化变量这2个步骤。
上面所说的几个概念,也适用于其他的编程语言。
示例
声明变量
var 变量名;
初始化变量
变量名 = "XXX";
定义变量
var 变量名 = "XXX";
几个问题
1、如果声明了变量,但是没有初始化变量。在访问这个变量的时候不会报错,因为js变量有一个默认值undefined。
例如
var 变量名;
alert(变量名); //正确:值是undefined
注:java里的变量,每种数据类型也都有它的默认值。
2、在js里,初始化变量之前可以不用声明变量,也就是说定义变量可以不包括声明这个步骤(因为js默认会声明)。
例如
变量名 = "XXX";
alert(变量名); //正确!
注:这一点跟其他的编程语言区别很大,比如,java如果给一个没有声明的变量赋值/初始化的话,编译器就会报错。
3、但是,如果一个变量没有初始化并且也没有声明的话,那么这个变量就是未定义的。js在访问一个没有定义的变量时,会报变量未定义的错误:
例如
alert(a); //报错信息:Uncaught ReferenceError: aaa is not defined
变量的数据类型
基本数据类型
有5种,
1)undefined
这种数据类型,只有一个值,那就是undefined。
2)null
也只有一个值,那就是null。
3)boolean
2种值,true或false。
4)string
很多种值。
5)number
很多种值。
注:如何获取一个变量的数据类型呢?答:使用typeof操作符即可。
对象/引用类型
只有1种,那就是object类型。
下面的分类,只是为了更好地理解和记忆,但它们的共同特点就是都是对象/引用类型。
1、根类
即所有类的基础类Object,与java类似。
2、基本数据类型的包装类型
有3个,也与java类似。
String
Number
Boolean
3、Array
4、Function
对象/引用类型与基本数据类型的区别
如果一个变量是对象类型,那么可以给它添加数据和方法。
如果是基本数据类型的话,则不能添加数据和方法。