基本类型和引用类型
ES6之后,JS中有7中基本类型:String, Number, Boolean, Null, Undefined, BigInt, Symbol,和一种复杂数据类型(引用类型)Object。
typeof操作符
typeof可以检测一个变量的类型,
-
undefined-对应Undefined类型 -
boolean-对应Boolean类型 -
string-对应String类型 -
number- 对应Number类型 -
object- 对应对象(Object或者null) -
function-对应函数
特殊点:
- 调用
typeof null会返回object因为特殊值null被认为是一个空的对象的引用。 - undefined 只有一个值,就是
undefined,在使用var声明变量但未对其初始化时,该变量的值为undefined;如果一个值没有声明,则该错误为Reference Error,引用错误。 - 如果一个变量定义时准备在将来用于保存对象,则最好将该变量初始化为
null。 -
Boolean类型转化,空字符串,0和NaN,undefined,null在转化成布尔类型时都为false;其余为true。 - Number类型,0.1+0.2 === 0.3为什么是false?因为计算机中存储数据的进制为2进制或8进制,16进制,存储0.1和0.2时存储成一个循环小数,因此相加时不严格等于0.3;
- 自增运算符,自减运算符。前置和后置,区别就是前置运算符先改变变量的值,后求值;后置运算符是先求值,后改变变量的值。
- 逻辑与(&&)\逻辑或(||)属于短路操作,如果第一个操作数能够决定结果,就不会对第二个操作数求值;如第一个操作数:
null && obj;
undefined && obj;
NaN && obj
let found = true;
let res = found || somethingUndefined;
console.log(res) ; // true
在上面代码中,如果第一个操作数已经决定结果,第二个操作数不会被求值。例如res直接返回的是true的结果。
- 任何操作数与NaN进行比较,结果都是
false
var res = NaN > 3; // false
var res2 = Nan <= 3; // false
-
null==undefined// true