七种语言类型
- int
- string
- boolean
- null
- undefined
- object
- symbol
undefined
let a;
let b = void(0)
a === b // true
变量未赋值都是undefined,是一个变量,不是关键字,用void(0)代替
我们一般不会把变量赋值为undefined,这样可以保证所有的值为undefined的变量,都是从未赋值的自然状态。
void(0)
<a href="#">click</a>
默认跳转到顶部
<a href="#id">click</a>
默认跳转到id的元素
<a href="javascript:void(0)">click</a>
表示不跳转
null
是一个关键字,可以用null来获取,但是undefined不行
number
0.1+0.2 === 0.3 // false
js不能比较小数,但可以用精度来判断
Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON // true
Symbol
独一无二的key值
let a = symbol();
let b = symbol("this is b");
obj[a] = 100;
用symbol做对象属性的时候object.keys获取不到
代替变量
const COLOR_RED = Symbol();
const COLOR_GREEN = Symbol();
function getComponent(color) {
switch(color) {
case COLOR_RED:
return "red";
case COLOR_GREEN:
return "green";
default:
throw new Error("Undefind color")
}
}