JS类型
JS有7大类型,分别为Undefined,Boolean,String,Number,null,Object,Symbol。
Undefined
任何变量未被赋值都会是undefined,但是undefined应该是一个关键字而非类型,这是设计失误,可以用void 0代替。
Boolean
只有true或者false。
String
具有lengh()函数。
toString()和String()转换函数。
Number
包含整数和浮点数两种。
非整数的Number类型无法用== (===也不行)来比较,比如在JS中, 0.1+0.2不等于0.3,除非这样写:
Math.abs (0.1+0.2 - 0.3) <= Number.EPSILON(EPSILON是es6中为Number类型新增的一个极小的常量,表示1和大于1的最小浮点数之差,1的最小浮点数为1.00...01,51个0,差为2的-51次方,如果差值小于这个数,那么就可以认为不存在差值)
检查等式左右两边差的绝对值是否小于最小精度,才是正确的比较浮点数的方法
Null
空对象指针
Object
是一组属性和方法的集合。
Symbol
ES6推出的类型,标识变量是独一无二的。
//用法 let a1 = Symbol("a"); let a2 = Symbol("a"); console.log(a1==a2); //false
可以用作对象属性名,保证不会重复
var m = Symbol(); var a = {}; a[m] = 'hello' //写法1 a={ //写法2 [m]:'hello' } Object.defineProperty(a,m,{value:'hello'}) //写法3 //结果 a[m] = 'hello'