JS - 类型转换

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/kelly0721/article/details/96851021
一、基础知识
  1. 强制转换:首先强制转换说的是3个构造函数,分别是Number()、String()、Boolean()他们的作用就是将各类型的内容转换成对应的值【数字、字符串、布尔值】
  2. 原始值:原始值首先代表的是5大基础类型值因为他们不能再被细化,是最单纯的值。分别是:undefined、null、boolean、number、string。他们因为长度大小固定,一般存在栈(stack)中,方便快速查找
  3. 复杂值:Object、Function、Array、Date、RegExp这些都是复杂值,因为他们在内存中的大小是未知的,可以包含任何值,不是特定值。他们不适合存在栈中,所以存在堆中,栈里只存放一个指针,指针指向它的内存地址
  4. toString(): 需要返回对象的字符串,可以做进制转换。null和undefined不能调用toString()方法
  5. valueOf() :需要返回的是对象的原始值
二、 Number()

Number()的类型转换

原始值转换规则如下

  1. 数值:转换后还是数值
  2. 字符串:“123”转换后是123,“abc”转换后是NaN,而且由于Number函数非常严谨,只要字符串中有不可转换成数值的字符,就会显示NaN,空字符串是0。
  3. 布尔值: true是1 false是0
  4. undefined:转换NaN
  5. null:转换成0

复杂值转换规则:
复杂值转换首先会调用valueOf方法如果能返回原始值也就是(数字,字符串,布尔)就不在进行后续操作,直接执行Number()
如果返回的不是原始值,就会执行toString()方法,toString返回的是原始值就执行Number(),返回的还不是原始值就返回NaN

parseInt 和 Number 的区别:

  1. parseInt在处理时会逐个字符识别转换,遇到空格、非数字时才会停止识别转换,显示之前处理的结果。
  2. Number是把当前字符作为一个整体,只要有不符合要求的地方返回的就是NaN。
  3. 两者共同之处:\v \r \t \n \f等这种特殊空白符两者都会默认转化.
三、String()
  1. String() 类型转换之后都会变成 string 类型
  2. 原始类型值会直接使用String()转化
  3. 复杂类型调用valueOf方法时如果返回了原始类型值就使用String()转化
  4. 如果不是原始类型值的话,就会报错
四、Boolean()

只有6种情况会返回false,其他情况都是返回true

  1. Boolean(undefined)
  2. Boolean(null)
  3. Boolean(-0)
  4. Boolean(+0)
  5. Boolean(NaN)
  6. Boolean("")

猜你喜欢

转载自blog.csdn.net/kelly0721/article/details/96851021
今日推荐