JavaScript
中的每一个值都属于某一种特定的类型,类型被广泛运用于变量,函数参数、表达式、返回值等。JavaScript
一共有7种数据类型,分别为:Null
,Undefined
,Number
,Object
,String
,Boolean
,Symbol
,
Null和Undefined
undefined
表示变量定义时,当没有赋值给变量时,会默认赋值一个undefined
给变量,undefined
不是关键字,是一个全局变量。
null
表示是定义了但为空值,指针对象为空,我们一般都会使用null
来将对象清空,比如在原型链中查找原型对象时,顶层的原型对象指向null
。具体实例如下所示:
let a;
let b = null;
console.log(a == b);//true
console.log(a === b);//false
console.log(typeof a);//undefined
console.log(typeof b);//object
void 0
在js中用void 0
也可以表示undefined
,并且不能被修改,前面说过,undefined
是一个全局变量,是可以被修改的,所以一般都使用void 0
来代替undefined
,void
后面跟上一个表达式,返回的都是 undefined
。
let c = void 0;
console.log(c);//undefined
let d = void 1;
console.log(d);//undefined
Boolean
Boolean
类型有两个值,分别为true
和false
。使用Boolean(values)
可以将任意值强制转化为Boolean
类型,除了以下6个类型转为false
,其它的都将强制转化为true
。
- undefined
- null
- ''
- -0
- +0
- NaN
String
String
用于表示文本数据,全局对象是一个用于字符串或一个字符序列的构造函数。字符串的最大长度为2^53-1。
Number
Number
类型指的就是数字类型,相对比较简单,这里主要是介绍下为什么0.1+0.2 == 0.3
不成立,如下所示:
console.log(0.1 + 0.2 == 0.3)//false
这是因为根据双精度浮点数的定义,Number
类型中有效的整数范围是 -0x1fffffffffffff
至 0x1fffffffffffff
,所以 Number 无法精确表示此范围外的整数。解决方案是一般将其转成整数再进行运算,如下所示:
console.log((0.1 * 10 + 0.2 * 10)/10 == 0.3)//false
Symbol
symbol
是ES6
中引入的类型,主要是为了防止对象的key
重复和使用symbol.iterator
来使用for of
。
Ojbect
JavaScript
中所有的对象都来自于Ojbect
,所有对象从Object.prototype
继承属性和方法。
个人博客
网友评论