美文网首页
JavaScript 关于类型转换

JavaScript 关于类型转换

作者: 勇者闯魔城 | 来源:发表于2018-10-21 18:00 被阅读0次

    JavaScript 的类型转换

    在JS 里面有一些运算符例如typeof 可以操作任意的数据类型,并返回特定类型的值。但是,如像算术运算符“+”、"*",比较运算符“==”等,会根据情况对操作数进行类型转换以符合自己的规则。

    算术运算符“+”的类型转换

    1. 在两个操作数都是数字的时候,会做加法运算
    2. 两个参数都是字符串或在有一个参数是字符串的情况下会把另外一个参数转换为字符串做字符串拼接
    3. 在参数有对象的情况下会调用其valueOf或toString
    4. 在只有一个字符串参数的时候会尝试将其转换为数字
    5. 在只有一个数字参数的时候返回其正数值
    console.log(2+4);//6
    console.log("2"+"4");//"24"
    console.log(2+"4");//"24"
    console.log(2+new Date());//"2Mon Jan 20 2014 17:15:01 GMT+0800 (China Standard Time)"
    console.log(+"4");//4 
    null + 1 // 1
    undefined + 1 // NaN
    
    

    算术运算符“-” “/‘’ ‘’*‘’

    自动转化了为数字

    '5' - '2' // 3
    '5' * '2' // 10
    true - 1  // 0
    false - 1 // -1
    '1' - 1   // 0
    '5' * []    // 0
    false / '5' // 0
    'abc' - 1   // NaN
    

    注意

    +'abc' // NaN
    -'abc' // NaN
    +true // 1
    -false // 0
    

    比较运算符 “==” 判断的类型转换

    1. 如果两个值类型相同,则执行严格相等的运算

    2. 如果两个值的类型不同会有如下情况

    1. 如果一个是null,一个是undefined,那么相等
    2. 如果一个是数字,一个是字符串,先将字符串转为数字,然后比较
    3. 如果一个值是true/false则将其转为1/0比较
    4. 如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较
    5. 其它就不相等了
    转化为数值的规则
    类型 结果
    Undefined NaN
    Null 0
    Boolean ture -> 1, false -> 0
    String “abc” -> NaN, “123” -> 123

    注意:

    NaN === NaN // false
    undefined == null   //true
    !" " == false  //true
    "00" == false  //true
    "0.00" == false //true
    

    if ()的条件部分,会将非布尔值的参数自动转换为布尔值。

    转化规则

    类型 布尔值
    Undefined false
    Null false
    Boolean 直接判断
    Number +0, −0, 或者 NaN 为 false, 其他为 true
    String 空字符串为 false,其他都为 true
    Object true

    注意:

    if (" ") {
        console.log('blank')
    // blank
    }
    

    这是带有空格的字符串非空字符串,所以if(" ")判断为ture。

    相关文章

      网友评论

          本文标题:JavaScript 关于类型转换

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