数据类型

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

数据类型_第1张图片
js除以0

数值转化

有三个函数能够把非数值转行为数值:Number() parseInt() parseFloat()

  • Number () 对象调valueOf,如果为NaN,调toString,如果还是NaN,返回NaN,就这个规则比较特殊。
  • parseInt() 提取字符串中的数字并取整,没有则为NaN,简单粗暴。第二个参数为进制。
  • parseFloat() 提取字符串中的小数,遇到第二个.会忽略。

你可能感兴趣的