简介
JavaScript 有 6 种数据类型。其中 5 基本数据类型,1 种引用类型。
基本数据类型:number、string、boolean、undefined、null
引用类型:object
boolean
后面列出的值会被当作假:false、null、undefined、空字符串’‘、0、数字NaN。其他所有值都被当作真。
在做相等比较时,最好只用 === 和 !==
undefined
- 变量被声明了,但没有赋值,就等于 undefined。
-
调用函数时,应该提供的参数没有提供,该参数等于 undefined。
- 对象没有赋值的属性,该属性的值为 undefined。
- 函数没有返回值时,默认返回 undefined。
判断数据类型的方法
-
typeof 操作符,用于判断 number,string,boolean,undefined,function
-
instanceof 运算符,用于判断对象,a instanceof b,a 是否是 b 的一个实例,会判断原型链,多框架有时不适用。
-
isPrototypeof(instrance),区别于instanceof,就是当用 Object.create() 来创建新实例,又没有重新制定 constructors 时,instanceof 会出错,而这时照样可以用 isPrototypeof()
var A = { //something } var B = Object.create(A); var C = Object.create(B); console.log(A.isPrototypeOf(C)); // true console.log(C instanceof A); //TypeError
-
hasOwnProperty() 方法,是否是自己的实例,不判断原型链
-
Array.isArray(arr);用于判断 arr 是否为数组;(ie9+)
-
Object.prototype.toString.call(obj) ;返回 [Object class],class 是 obj 的数据类型,这个可用于判断对象的数据类型,例如 arr 是一个数组。跨框架可用。
Object.prototype.toString.call(arr);// [object Array]
小结
- 不要使用
new Number()
、new Boolean()
、new String()
创建包装对象; - 用
parseInt()
或parseFloat()
来转换任意类型到number
; - 用
String()
来转换任意类型到string
,或者直接调用某个对象的toString()
方法;(null和undefined没有toString方法) - 通常不必把任意类型转换为
boolean
再判断,因为可以直接写if (myVar) {...}
; typeof
操作符可以判断出number
、boolean
、string
、function
和undefined
;- 判断
Array
要使用Array.isArray(arr)
; - 判断
null
请使用myVar === null
; - 判断某个全局变量是否存在用
typeof window.myVar === 'undefined'
; - 函数内部判断某个变量是否存在用
typeof myVar === 'undefined'
。
number
对象调用toString()
报SyntaxError
123.toString(); // SyntaxError
123..toString(); // '123', 注意是两个点!
(123).toString(); // '123'