JS中的数据类型以及数据转换

数据类型

JS中的数据类型可以分为两类:

  • 原始类型
    1. 数字
    2. 字符串
    3. 布尔值
    4. null
    5. undefined
  • 对象类型
    1. 无序集合
    2. 数组
    3. 函数

类型转换

类型的转换可以分为

  • 原始值到原始值的转换

  • 原始值到对象的转换
    1.调用String()构造函数
    2.调用Number()构造函数
    3.调用Boolean()构造函数
    (null和undefined无法完成到对象的正常转换)

  • 对象到原始值的转换
    1.对象到布尔值的转换:所有的对象都有转换为true
    2.对象到字符串的转换与对象到数字的转换需调用相应的方法来完成:

      当对象进行到字符串的转换时
      1.优先调用toString()方法,如果返回一个原始值,则将这个值转换为字符串,并将其返回
      2.如果没有toString()方法,或者不返回一个原始值,如果存在valueOf()方法方法则调用
      valueOf()方法,当返回值是原始值时,将其转换为字符串
      3.无法从两个方法中获得一个原始值,将抛出一个类型错误异常
    
      当对象进行到数字的转换时
      1.优先调用valueOf(),后者返回一个原始值,则将这个原始值转换为数字,并将其返回
      2.调用toString(),后者返回一个原始值,则将这个原始值转换为数字,并将其返回
      3.负责抛出一个类型错误异常
    
原数值字符串数字布尔值对象
undefined“undefined”NaNfalsethrows TypeError
null“null”0falsethrows TypeError
true“true”1new Boolean(true)
false“false”1new Boolean(false)
true“true”1new Boolean(true)
" "0falsenew String(" ")
“2”1truenew String(“2”)
“one”NaNtruenew String(“one”)
0“0”falsenew Number(0)
-0“0”falsenew Number(-0)
NaN“NaN”falsenew Number(NaN)
Infinity“Infinity”truenew Number(Infinity)
-Infinity“-Infinity”truenew Number(-Infinity)
[] 任意数组" "0true
[ 9 ]“9”9true
[ ‘a’ ]join()方法NaNtrue

该表节选于《JavaScirpt权威指南(第六版)》

类型转换中又有显示转换与隐式转换

  • 显示转换
    转换为字符串:tostring方法、String函数
    转换为数字:parseInt和parseFloat方法、Number函数
    转换为布尔式:Boolean函数
    转换为对象:Object函数

  • 隐式转换

  1. 加法运算符"+“如果加号两边存在一个是String类型,表达式的值便是一个String。
    其余四则运算运算符”-"、"*"、""只要两边有一个为number类型,表达式的值便是number。当遇到无法转换为数字的情况其会返回NaN。
  2. 判断语句
    判断语句中的判断条件需要是Boolean类型,所以条件表达式会被隐式转换为Boolean。 其转换规则同Boolean的构造函数。
  3. Native代码调用
    JavaScript宿主环境都会提供大量的对象,它们往往不少通过JavaScript来实现的。 JavaScript给这些函数传入的参数也会进行隐式转换。
  4. !
    一元“!”运算符会将其操作数字转换为布尔值并取反。
  5. ==
    “==”用于比较两个值是否相等,如果两个操作数不是同一类型,那么相等运算符会尝试进行类型转换
    如果一个值是null,另一个是undefined,则他们相等。
    如果一个值是数字,另一个是字符串,先将字符串转换为数字,再进行比较。
    如果一个值为true,则将其转换为1再比较。如果为false,则转换为0。
    如果一个值为对象,另一个为数字或字符串,则调用toString()方法或valueOf()将对象转换为原始值再进行比较。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值