JavaScript数据类型

数据类型

js中的数据类型分为基本数据类型和引用数据类型

基本数据类型:number string boolean null undefined

引用数据类型:

对象object:Array Object RegExp Math Date String Number

函数Function

number数据类型

包含整数和浮点数。

将其他数据类型转为数字数据类型的方法?

Number():

强制将其他数据类型转为数字类型,当转化值中有一个不是数字的时候,就返回NaN,如果是数字的时候直接返回数字,Number()这个方法的返回值只有数字或NaN。

NaN:not a number 非有效数字

  • Number({})

    对象数据类型转化为数字的时候,首先会转化为字符串,然后再转化为数字。

    第一步 先将括号中的{}转为字符串,调用.toString()方法

    第二步 {}.toString() 转为字符串 最终值为"[object Object]"

    Number("[object Object]") 最终值是NaN

  • Number([])

    第一步 [].toString() 转为字符串最终值为 "" (空字符串)

    第二步 Number("") 最终值是0

  • Number(null) 最终值是0
  • Number(undefined) 最终值是NaN
  • Number(true) 最终值是1
  • Number(false) 最终值是0
console.log(Number(1+1));//2
console.log(Number("1+1"));//NaN
//console.log(Number([1,2]));
//[1,2].toString() -- > "1,2"
//Number("1,2") -- >NaN

Number()中的值如果是

  1. 字符串的时候,只要字符中有一个值不是数字返回NaN
  2. 对象的时候,先将对象转为字符串(调用.toString()方法),然后将字符串转为数字
  3. 布尔的时候,true为1,false 0
  4. null的时候,为0
  5. undefined的时候,为NaN

isNaN()

检测一个值不是一个数字,返回值是布尔类型的值,要么是true要么是false,isNaN在验证之前,会先调用Number()方法,然后再去检查Number()方法的返回值。

parseFloat()

将字符串中的值从左向右查找,遇到非数字停止查找,将查找到的结果作为返回值,可以识别小数点

parseInt()

将字符串中的值从左向右查找,遇到非数字停止查找,将查找到的结果作为返回值,只能返回整数

console.log(parseFloat("123.45bc"));//123.45
console.log(parseInt("123.45bc"));//123
console.log(parseInt([]));//NaN
console.log(parseFloat(true));//NaN
console.log(parseFloat(1.2));//1.2
console.log(parseInt(1.2));//1
console.log(parseInt(.2));//0
console.log(parseFloat(.2));//0.2
console.log(parseInt(".2"));// NaN
console.log(parseInt(.2));// 0
console.log(parseFloat(".2"));//0.2
console.log(NaN == NaN);//false

boolean数据类型

布尔是逻辑运算 只有两个值 true 和 false

如果判断一个值是真是假,遵循 0 "" NaN null undefined为假,其余都为真

console.log(null == undefined);  //true
console.log(!(NaN == NaN));//true
console.log(!"0");//false
console.log(!!"null");//true

js中数据类型的比较

对象转为布尔值的时候,全部为true

'' 两个值比较是否相等

'=' 绝对比较 只要两边数据类型不同 直接返回false

val1 == val2 如果两个值不是同一个数据类型 就会进行默认数据类型转换

对象 == 对象 永远不相等

对象 == 字符串 将对象通过toString 转化为字符串,再进行比较

对象 == 数字 将对象通过toString() 转化为字符串,然后在转化为数字

数字 == 字符串 字符串转化为数字 再进行比较

数字 == 布尔 将布尔转化为数字(true:1, false:0) 在进行比较

字符串 == 布尔 都转化为数字在进行比较

null和undefind 跟任何其他数据类型都不等