美文网首页饥人谷技术博客
[JavaScript]之类型转换

[JavaScript]之类型转换

作者: 是苏菇凉呀 | 来源:发表于2019-05-09 00:20 被阅读2次

一、任意类型转为字符串

1. toString()

只适用于number,boolean,object
null和undefined转换不了

(1).toString()     //"1"

true.toString()    //"true"

var obj={}
(obj).toString()     //"[object Object]"

2. String()

  • 原始类型值的转换
String(123)      // "123"
String('abc')    // "abc"
String(true)     // "true"
String(undefined)      // "undefined"
String(null)     // "null"
  • 对象的转换
String({name: 'suyuan'})       // "[object Object]"
String([1, 2,])      // "1,2"
  • String()方法的转换规则
  1. 调用对象自身的toString()方法。如果返回原始类型的值,继续调用String()方法得到转换后的值,结束。
  2. 如果toString()方法返回的是对象,继续调用原对象的valueOf()方法。如果valueOf()方法返回原始类型的值,继续调用String()方法得到转换后的值,结束。
  3. 如果valueOf方法返回的是对象,就报错。

3. + ''加上一个空的字符串

1 + ''                  //"1"
true + ''              //"true"
null + ''              //"null"
undefined + ''        //"undefined"
var obj = {}
obj + ''              //"[object Object]"

二、任意类型转为布尔

1. Boolean()

  • 除了5个falsy值外,其他的值全部为true
    undefined、null、0、NaN、''
Boolean(undefined)       // false
Boolean(null)            // false
Boolean(0)               // false
Boolean(NaN)             // false
Boolean('')              // false

2. !!两个感叹号

一个!感叹号是取反,两个!!感叹号就是本身的值

!!1                       //true
!!a                      //true
!!undefined              //false
!!null                  //false
var obj = {}
!!obj                  //true

三、任意类型转为数字

1. Number()

  • Number()的结果只有两种,要么是数字,要么是NaN
  • 基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN。
  • 如果是对象,将返回NaN,除非是包含单个数值的数组。
Number([5])        // 5
Number(123)     // 123
Number('123')    // 123
Number('123abc')    // NaN
Number('')    // 0
Number(true)    // 1
Number(false)    // 0
Number(undefined)    // NaN
Number(null)    // 0
  • Number()的转换规则
  1. 调用对象自身的valueOf()方法,如果返回原始类型的值,则直接对该值使用Number函数,结束
  2. 如果valueOf()返回的是对象,则调用对象自身的toString()方法。如果toString()方法返回原始类型的值,则对该值使用Number()方法 ,结束
  3. 如果toString方法返回的是对象,就报错。
var a = [1,2,3]
Number(a)           //NaN

 相当于

a.valueOf()        //ƒ valueOf() { [native code] }    返回的是对象,则调用对象自身的toString()方法
a.toString()        //"1,2,3"      返回的是原始类型的值,则对该值使用Number()方法
Number("1,2,3")      //NaN    因为逗号无法转成数值,整个字符串就会被转为NaN

2. parseInt()

将字符串转为整数

  • parseInt()的结果只有两种,要么是数字,要么是NaN
  • 当字符的开头不能转为数字时(空格除外),就是NaN
  • 还可以接受第二个参数(2-36之间),表示被解析的值的进制
parseInt(123)   //123
parseInt(123abc)   //123
parseInt(1.23)   //1
parseInt('')      //NaN
parseInt(null)    //NaN
parseInt(undefined)   //NaN
parseInt(true)   //NaN

3. parseFloat()

将字符串转为浮点数

  • parseFloat()的结果只有两种,要么是数字,要么是NaN
  • 当字符的开头不能转为数字时(空格除外),就是NaN
parseFloat('3.14')   // 3.14
parseFloat('123.45abc')   // 123.45
parseFloat('')   // NaN
parseFloat(true)    // NaN
parseFloat(null)   // NaN
parseFloat(undefined)   //NaN

4. -0减0

'123'-0   //123

5. +

+ '123'   //123

相关文章

网友评论

    本文标题:[JavaScript]之类型转换

    本文链接:https://www.haomeiwen.com/subject/lsxvoqtx.html