var
在js中只有var这一种基本的动态数据类型(弱类型),其中包含了number,字符串类型,布尔,数组,Object类型以及null和undfined。
(1)字符串类型和number
var a = "123";
a += 10;
var b = 10;
b ="123" + b;
此时结果ab,均为 "12310"。
(2)boolean
此时 结果:a,b true c,d,e,f false 其中 number类型非0即true,String非空即true。
(3)数组
js中数组可以越下标赋值,未赋值的元素值为undefined(可想越界也为undefind)。
var a = ["AAA","BBB"];
a["AAA"] = ["1","2","3"];
a[1] = ["4","5","6"]
alert(a[0][0]); //A
alert(a["AAA"][0]);//1
alert(a[1][0]); //4
alert(a["BBB"][0]);
(4)Object
依然是所有数据类型的父类
(5)undefined
需要注意的是 undefined是有值的,而此类型的值均为 undefined。
对于尚未声明过的变量,只能执行一项操作,就是使用typeof操作符检测其数据类型(但在严格模式下会导致错误)
出现场景:
已声明未赋值的变量
获取对象不存在的属性
无返回值的函数的执行结果
函数的参数没有传入
void(expression)
(6)null
Null类型只有一个值,就是null,逻辑角度看,null值表示一个空对象指针
如果定义的变量将用于保存对象,最好将该变量初始化为null
实际上undefined值是派生自null值的,所以undefined == null
出现场景:对象不存在时
类型转换
Boolean(null):false
Number(null):0
String(null):'null'
null是空对象指针,而[]是空数组,{}是空对象,三者不相同
null不能添加自定义属性
(7) NaN
NaN与任何值都不相等,包括NaN本身
任何涉及NaN的操作都会返回NaN
isNaN()来判断这个数字是不是NaN,包含着隐式类型转换Number()
参考博客http://www.jb51.net/article/71549.htm