Javascript 的类型
6种原型数据类型
js有6种原型数据类型( null
,undefined
,boolean
,number
,string
,Symbol
)
null – 空
null只有null一个值,表示一个空对象指针。一般用来初始化变量(即先定义出一个变量,在此之后用于保存对象)。
在Javascript的运行环境里不会产生null值,除非你在代码中有显式的赋值(通常情况下你得到的会是undefined而不是null,只有一个例外就是document.getElementById,它会在找不到元素的情况下返回null)。有节制的使用undefined来替代null会更容易追踪bug。
var as = null;//undefined
console.log(as);//null
访问它的任何属性都会失败。
null.asd
//Uncaught TypeError: Cannot read property 'asd' of null(…)
null无法装箱(把基本数据类型转换为对应的引用类型的操作称为装箱,把引用类型转换为基本的数据类型称为拆箱)。
undefined – 未定义
当访问一个对象中不存在的属性时就会得到一个undefined。
document.nonexistent //undefined
访问它的任何属性也都会失败。
undefined.asd
//Uncaught TypeError: Cannot read property 'asd' of null(…)
undefined无法装箱。
string – 字符串
‘asd’,”asd”(使用单引号和双引号均可)。
字符串在作为String的实例时会进行装箱操作(
new String('asd');
)。
number – 数字
例如:5,3e+10(所有数字都是浮点型的,尤其是分数,但是可以用x >>> 0来取出整数位)。
数字在作为Number的实例时会进行装箱操作。
boolean – 布尔
有2个值(true和false)。
布尔类型在作为Boolean的实例时会进行装箱操作。
symbol – 布尔
Symbol ( 在 ECMAScript 6 中新添加的类型)。一种数据类型,它的实例是唯一且不可改变的。
另外3种基于Object对象的引用类型
object – 对象
例如:{foo: ‘bar’, bif: [1, 2]},是真正的哈希表。
总是会装箱。
是Object的实例。
function – 函数
例如:function(x) { return x + 1;}。
必定装箱。
Function的实例。
array- 数组
例如:[1, 2, “foo”, [3, 4]]。
总是会进行装箱。
是Array的实例。
RegExp – 正则表达式
例如:/foos*([bar]+)/。
总是会装箱。
是RegExp的实例。
判定类型
由于js是松散类型(数据类型具有动态性),我们一般用typeof来鉴定 变量的值 的类型。
对一个值使用typeof可能返回
undefined(未定义)
boolean(布尔)
string(字符串)
number(数值)
object(对象或
null
)【typeof null会返回object,因为特殊值null会被认为是一个空对象的引用】function(函数)