ECMAScript 中有5中简单数据类型基本数据类型
Undefined,Null,Boolean,Number和String+一种复杂数据类型Object,Object本质是一组无序的明值对组成。所有其他类型都是基于这5种基本类型和1种复杂类型。函数和数组都属于Object类型,但是typeof函数返回的是function
,而Null的typeof返回objecj
,据说这是历史遗留问题。
获取更详细的数据类型
xx instanceof Object
xx instanceof Array
xx instanceof RegExp
Symbol
ECMAScript6 新增了一种数据类型---------Symbol
Symbol([description]) 参数可选
var sym = Symbol("foo");
typeof sym; // "symbol"
var symObj = Object(sym);
typeof symObj; // "object"
在对象中查找Symbol属性
方法Object.getOwnPropertySymbols() 让你在查找一个给定对象的符号属性时返回一个符号类型的数组。注意,每个初始化的对象都是没有自己的符号属性的,因此这个数组可能为空。除非你已经在对象上设置了符号属性。
Undefined Null
Undefined 类型只有一个值,即特殊的undefined
Null类型只有一个值,即特殊的null
Null的type of 为object 而Undefined为undefined
实际上undefined的值是由null派生的
alert(null == undefined) //true
如何判断是不是数组
如果用type of array为 object,如何判断是不是数组呢,答案是toString,array toString结果为
[object Array]
,{}为[object object]
NAN
NAN,即
Not a Number
是一个特殊数值,其他语言任何数除以0都会报错,js返回NAN/Infinity,从而不会影响其他代码,可以用isNaN()
来判断是否为NAN
![](https://img.haomeiwen.com/i2020768/1ba91cdacd845104.png)
数值转化
有三个函数能够把非数值转行为数值:Number() parseInt() parseFloat()
- Number () 对象调valueOf,如果为NaN,调toString,如果还是NaN,返回NaN,就这个规则比较特殊。
- parseInt() 提取字符串中的数字并取整,没有则为NaN,简单粗暴。第二个参数为进制。
- parseFloat() 提取字符串中的小数,遇到第二个
.
会忽略。
网友评论