5种数据类型
Undefined Null Boolean Number String
1种复杂的数据类型
Object
(1) Undefined VS NULL
Undefined 是定义了 但是并没有初始化
值为undefined
eg:
var a;
console.log(a);//undefined
console.log(typeof(a));//undefined (类型)
NULL 空对象指针
值为null
eg:
var a=null;
console.log(typeof(a));//object (类型) 对象类型
undefined==null
(2) == VS ===
== 类型可以不同 比较的值相同
null==undefined
boolean: true为1 false为0
number string: string转化成number类型 进行比较
123=="123"
object : 要看比较的类型
if 是number 则转为number
var obj=[1,2,3];
var num=123; //obj==num
if 是string 则转为string
var obj=[1,2,3];
var str="1,2,3"; //obj==str
=== 类型相同 且比较的值相同
(3) typeof 检验数据类型
undefined
boolean
string
number
object---对象或null eg: 数组为对象
function--- eg:
function a(){}
alert(typeof(a));//function
(4) 检测Object方法 typeof只能说明这个是object 不能说明他们是object中的哪一类
- instanceof
eg: var a=[];
a instanceof Array;//true
- Object.prototype.toString.call(a);
//"[object Array]"
toString表明当前对象的内部属性值
Object内部有10个属性值 eg:Array Boolean Date Math RegExp....
(4.1) 判断Array的类型方法
- a instanceof A
//只有A的原型对象出现在a的原型链上 才可以返回true
var a=[1,23];
var b={};
console.log(b instanceof Array);//false
- Array.isArray() //兼容性问题 IE8瘫
var a=[1,23];
console.log(Array.isArray(a));//false
- Object.prototype.toString.call(a);
//兼容性最好 没有问题
var a=[1,23]; console.log(Object.prototype.toString.call(a));//[object Array]
(5) NaN
Not a number
NaN!=NaN //true
NaN==NaN //false
typeof NaN// number