JavaScript数据类型

数据类型

JS中存在5种简单数据类型:Undefined、Null、Boolean、Number和String。还有一种复杂数据类型——Object。
全部的值最终都将是上述6种数据类型之一。git

typeof 操做符

返回一个表明变量的数据类型的字符串github

  1. 'undefined'——若是这个值未定义
  2. 'boolean'——若是这个值是布尔值
  3. 'string'——若是这个值是字符串
  4. 'number'——若是这个值是数值
  5. 'object'——若是这个值是对象或null
  6. 'function'——若是这个值是函数

Undefined 数据类型

该类型只有一个值即 undefined。当一个变量被定义可是未赋值,则其值为 undefined
当使用typeof的时候,未定义变量和未声明变量都为 undefinedbash

let a;
typeof a // undefined
typeof b // undefined
复制代码

Null 数据类型

该类型只有一个值即 null,其含义为空对象指针,因此 typeof nullobject函数

Boolean 数据类型

当其余类型转换为Boolean类型时,具备如下对应关系:测试

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 空字符串(即"")
Number 任何非零数字值 0和NaN
Object 非null的对象 null
Undefined 由于只有一个值永远时false undefined

Number 数据类型

整数

存在8进制,以0开头,若是0后的字面量超出8进制则做为10进制,严格模式下不存在8进制 存在16进制,以0x开头ui

浮点数

保存浮点数的空间时保存整数值的两倍。因此1.0会被转换为1 作浮点数的一些测试的时候须当心,例如0.1 + 0.2 === 0.3 // falsespa

数值范围

最大最小值分别保存在:Math.MAX_VALUE Math.MIN_VALUEprototype

NaN

即非数值(Not a Number)其有两个特色:设计

  1. 任何设计NaN的操做都返回NaN
  2. NaN与任何值都不相等,包括自身

isNaN()

该方法接受一个任意数据类型的参数,返回布尔值表明该参数是不是 非数值指针

当参数是简单数据类型的时候,方法会将参数数值化,若是成功则返回false,不然返回true

当参数是对象时,会首先调用对象的valueOf()方法,而后肯定该方法的返回值是否能够转换为数值,若是不能,则基于这个返回值的toString()方法再判断

数值转换

能够将非数值转换数值,有如下三个方法:

Number()
parseInt()
parseFloat()
复制代码

Number()

  1. true转1,false转0
  2. 数字原样返回(包括进制,8,16)
  3. null转0
  4. undefined转NaN
  5. 若是是空字符串转0,若是是数字的字符串('123'能够可是'x123'不能够)则转数字,不然转NaN,16进制字符串转16进制转换十进制后的数字,八进制忽略前导零
  6. 若是是对象则先调用valueOf()方法,若是返回基本数据类型则走以上原则返回,若是返回一个对象则调用toString()方法走以上原则,且不递归处理两个方法返回的值

parseInt

其工做机制是先去除字符串前面的空格,找到第一个非空格字符,若是该字符为不是数字字符或者正负号,则返回NaN,若是解析到数字或正负号则接着匹配,且测试中依旧不能识别八进制,可是能够识别16进制,因此须要第二个参数来肯定返回的数字的进制

parseFloat

与parseInt功能类似,可是值得注意的是会忽略前导零后16进制永远都解析成0,因此parseFloat只能解析十进制数值

String 数据类型

字符串是不可变的,一旦建立,想要修改只能将原来的销毁

除了null和undefined,其余数据类型都具备toString方法,并且在Number类型调用toString方法时,能够加入一个进制参数来获取对应的进制的字符串。

Object 数据类型

Object的原型链上有几个基本的属性和方法:

constructor // 该属性保存了建立当前对象的函数
hasOwnProperty(propertyName) // 用于检查给定的属性在当前对象的实例中而不是在原型链上,参数为字符串
isPrototypeOf(object) // 用于检测传入的对象是不是当前对象的原型
prototypeIsEnumerable(prototypeName) // 用于检测给定的属性是否可以用 for-in 来枚举
toLocaleString() // 返回对象的字符串表示,和执行上下文环境的地区对应
toString() // 返回对象的字符串表示
valueOf() // 返回对象的字符串、数值或布尔值表示。一般与toString()方法的返回值相同
复制代码

持续更新在github

相关文章
相关标签/搜索