七种语言类型
- Undefined
- Null
- Boolean
- Number
- String
- Object
- Symbol(ES6)
Undefined、Null
Undefined表示类型未定义,它的类型只有一个值,就是 undefined。任何变量在赋值前是 Undefined 类型、值为 undefined,一般我们可以用全局变量undefined(就是名为undefined的这个变量来表达这个值),或者void运算来把任意一个表达式变成undefined值。
由于undefined是一个变量而非关键字,所以为了避免无意中的篡改,建议用void 0来获取undefined值。
Undefined 跟 null 有一定的表意差别,null表示的是:“定义了但是为空”。所以,在实际编程时,我们一般不会把变量赋值为undefined,这样可以保证所有值为undefined的变量,都是从未赋值的自然状态。
Null类型也只有一个值,就是null,它的语义表示空值,与undefined不同,null是JavaScript关键字,所以在任何代码中,都可以放心用null关键字来获取null值。
String
String是有最大长度的,长度是2^53 -1,但所谓得最大长度,并非“字符数”。
因为String的意义并非“字符串”,而是字符串的UTF16编码
JavaScript中的字符串是永远无法变更的,一旦字符串构造出来,无法用任何方式改变字符串的内容,所以字符串具有值类型的特征。
Number
JavaScript中的Number类型有2^64-2^53+3个值
其中有几个特殊的值:
- NaN
- Infinity,无穷大
- -Infinity, 负无穷大
另外值得注意的是,JavaScript中有+0和-0,在加法类运算中它们没有区别,但是除法的场合则需要特别区分留意(除以-0得到的是-Infinity)。检测+0和-0的方式则是检测 1/x 是Infinity
还是-Infinity
。
根据浮点数的定义,非整数的Number类型无法用==(===也不行)来比较
console.log(0.1 + 0.2 == 0.3); //false 实际上结果是0.30000000000000004 |
正确的比较方法应为
console.log(Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON); |
其中Number.EPSILON
即为JavaScript语言中的最小精度
###Symbol
创建Symbol方式:var mySymbol = Symbol("my symbol");
Object
Todo…