JS中的显式转换

显式转换

显示转换一般指使用Number、String和Boolean三个构造函数,手动将各种类型的值,转换成数字、字符串或者布尔值。

布尔型转换

  1. ECMAScript中所有类型的值都有与Boolean值(true和false)等价的值。要将一个值转换为其对应的Boolean值,可以调用转型函数Boolean()。

    数据类型 转换为true 转换为false
    String 任何非空字符串 空字符串
    Number 任何非零数字值 0和NaN
    Object 任何对象 null
    Undefined 不适用 undefined
  2. 举例说明

    Boolean(null);//false
    Boolean(undefined);//false
    Boolean("");//false
    Boolean(0);//false
    Boolean({});//true
    Boolean([]);//true
    

数值转换

有三个函数可以把非数值转换为数值:Number()、parseInt()、parseFloat()

  1. Number()

    Number()函数的转换规则:

    (1)如是布尔值,true转换为1,false转换为0

    (2)如是null,返回0

    (3)如是undefined,返回NaN

    (4)如是字符串,规则:

    • 如字符串中只包含数字(包括前面带正负号的情况),将其转换为十进制数值
    • 如字符串中包含有效的浮点格式,将其转换为对应的浮动数值
    • 如字符串中包含有效的十六进制格式,例如“oxf”,将其转换为相同大小的十进制整数值
    • 如字符串为空,转换为0
    • 如字符中包含除上述格式之外的字符,将其转换为NaN

    (5)如果是对象,自动调用对象的valueOf()方法,再依照前面的规则转换返回的值,如果转换结果为NaN,调用对象的toString()方法,再依照前面的规则转换

    • valueOf():JavaScript调用valueOf方法将对象转换为原始值。你很少需要自己调用valueOf方法;当遇到要预期的原始值的对象时,JavaScript会自动调用它。

    • 不同类型对象返回valueOf()方法的返回值

      对象 返回值
      Array.valueOf() 返回数组对象本身。
      Boolean.valueOf() 布尔值。
      Date.valueOf() 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数。
      Function.valueOf() 函数本身。
      Number.valueOf() 数字值。
      Object.valueOf() 对象本身。这是默认情况。
      String.valueOf() 字符串值。
    console.log(Number("abc"));//NaN
    console.log(Number("12ad"));//NaN
    console.log(Number("12"));//12
    console.log(Number("1.1"));//1.1
    console.log(Number(true));//1
    console.log(Number(false));//0
    console.log(Number(null));//0
    console.log(Number(undefined));//NaN
    console.log(Number(" "));//0
    console.log(Number(""));//0
    console.log(Number("0xf"));//15
    console.log(Number("0070"));//70 
    
  2. parseInt()函数

    规则:

    (1)第一个参数是要解析的字符串,只会解析从第一个字符到不是数字的字符

    (2)忽略字符串前面的空格,直到找到第一个非空格字符,如果第一个字符不是数字或者负号,会返回NaN,用parseInt()转换空字符串会返回NaN

    (3)如果字符串以“ox”开头,且后跟数字字符,会当作一个十六进制整数

    (4)第二个参数表示转换时使用的基数(多少进制),进制范围是2到36,没写该参数时默认是10进制

    console.log(parseInt('22e3'))//22
    console.log(parseInt('e3'))//NaN
    console.log(parseInt(10.59))//10
    console.log(parseInt(1,2))//1,1在2的进制范围内,所以能取到
    console.log(parseInt(3,2))//NaN,3不在2的进制范围内,所以不能取到
    console.log(parseInt(0x99))//153
    
  3. parseFloat()函数

    (1)与parseInt()函数类似,也是从第一个字符开始解析每个字符,一直解析到字符串末尾,或解析到遇到一个无效的浮点数字字符为止。能够解析小数点,而parseInt()只能取到小数点前面的值

    (2)字符串中的第一个小数点是有效的,第二个小数点就无效了

    (3)只能解析十进制数,没有第二个参数

    console.log(parseFloat("10qq"));//10
    console.log(parseFloat("10.5"));//10.5
    console.log(parseFloat("0xAF"));//0
    console.log(parseFloat("23.1.4"));//23.1
    

字符串转换

  1. toString()方法

    (1)可以将其他类型的转成字符串型。数值、布尔值、对象和字符串值都有toString()方法。但null和undefined没有这个方法

    (2)可以传递一个参数:输出数值的基数。通过传递参数,可以输出二进制、八进制、十六进制及其他有效进制格式表示的字符串值

var age=11;
console.log(age.toString());//"11"
var b1=true;
console.log(b1.toString());//"true"
var num=10;
console.log(num.toString());//"10",默认是10进制
console.log(num.toString(2));//"1010",将num转成2进制
console.log(num.toString(8));//"12",将num转成8进制
console.log(num.toString(10));//"10"
console.log(num.toString(16));//"a"
  1. string()方法

    null和undefined转成字符串的方法,对其他类型也适用

var value1=10;
var value2=true;
var value3=null;
var value4;
console.log(String(value1));//"10"
console.log(String(value2));//"true"
console.log(String(value3));//"null"
console.log(String(value4));//"undefined"

你可能感兴趣的:(JS中的显式转换)