基本类型和引用类型
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