@TedZhou
2019-11-09T16:34:42.000000Z
字数 1210
阅读 397
javascript
JS从诞生到现在已经二十几年了,在其演进中难免引入了一些bug,且积习难改。理解这些缺陷有助于避开那些新手陷阱。
他们都是基本类型,也都只对应一个常量值(分别是null和undefined)。
//已知:
typeof undefined === 'undefined'
//你可能会以为:
typeof null === 'null'//但,不是这样
//真相是:
typeof null === 'object'//null是指空对象,空对象也是对象!
这些本质上都是对象类型。
//已知:
typeof {} === 'object'
typeof function(){} === 'function'
//你可能会以为:
typeof [] === 'array'//但,不是这样的
//真相是:
typeof [] === 'object'//数组也是对象,基本类型外的除了函数都是对象。
类型 | Type | 值 | typeof |
---|---|---|---|
布尔 | Boolean | true | 'boolean' |
数值 | Number | 1 | 'number' |
字符串 | String | '' | 'string' |
符号 | Symbol | Symbol() | 'symbol' |
未定义 | Undefined | undefined | 'undefined' |
空* | Null | null | 'object' |
对象 | Object | {} | 'object' |
下列都属于 | 对象的派生类型 | ||
数组 | Array | [] | 'object' |
函数* | Function | function(){} | 'function' |
类 | Function | class{} | 'function' |
相等操作符比较两个值是否可能相等,即如果类型不同则进行可能的类型转换。
0==''//true
0=='0'//true
0==false//true
[1,2]=='1,2'//true
null==undefined//true
!null && !undefined//true
//注意:null和undefined既不等于true也不等于false
null==true || null==false//false
undefined==true || undefined==false//false
全等操作符比较两个值是否严格相等,即要求类型一样,也要求值相同。
null===null//true
undefined===undefined//true
null===undefined//false
0==='0'//false
0===-0//true
NaN===NaN//false?--这个比较有性格
Object.js()比较的结果同全等操作符,除了下面这两个相反:
Objecct.is(NaN,NaN)//true
Objecct.is(0,-0)//false