美文网首页饥人谷技术博客
js类型转换,纯干货

js类型转换,纯干货

作者: allen_tian | 来源:发表于2018-02-14 17:44 被阅读38次

    没有废话,纯干货

    一、(any)=>boolean

    任何类型转为布尔类型

    先来看题目,诸位自测(自测答案无法理解可留言)

    // 题目1:如下代码输出什么?
    if ("hello") {
        console.log("hello")
    }
    
    // 题目2:如下代码输出什么?
    if ("") {
        console.log('empty')
    }
    
    // 题目3:如下代码输出什么?
    if (" ") {
        console.log('blank')
    }
    
    // 题目4:如下代码输出什么?
    if ([0]) {
        console.log('array')
    }
    
    // 题目5:如下代码输出什么?
    if('0.00'){
      console.log('0.00')
    }
    

    答案揭晓

    1、"hello"
    2、
    3、"blank"
    4、"array"
    5、"0.00"
    

    转换规则解密

    类型 转为布尔的结果
    undefined false
    null false
    number +/-0、NaN为false,其他为true
    string ""/''为false,即空字符串为false,其他为true
    object true

    总之:boolean(any)

    二、== 连接的两个表达式的类型转换

    非全等符号连接的两个表达式直接进行判断时的类型转换

    先来看题目,诸位自测(自测答案无法理解可留言)

    "" == 0  //题目1
    " " == 0  //题目2
    "" == true  //题目3
    "" == false  //题目4
    " " == true  //题目5
    !" " == true  //题目6
    !" " == false  //题目7
    "hello" == true  //题目8
    "hello" == false //题目9
    "0" == true  //题目10
    "0" == false  //题目11
    "00" == false  //题目12
    "0.00" == false  //题目13
    undefined == null  //题目14
    {} == true  //题目15
    [] == true  //题目16
    var obj = { 
      a: 0, 
      valueOf: function(){return 1} 
    } 
    obj == "[object Object]"  //题目17
    obj == 1  //题目18
    obj == true  //题目19
    

    答案揭晓

    1、true
    2、true
    3、false
    4、true
    5、false
    6、false
    7、true
    8、false
    9、false
    10、false
    11、true
    12、true
    13、true
    14、true
    15、false
    16、false
    17、false
    18、true
    19、true
    

    转换规则解密

    x y 结果
    undefined null true
    number string y = Number(string),再进行比较
    boolean (any) x = Number(boolean),再进行比较
    object string or number object.valueOf()如果得到基础数据类型则直接进行比较,否则,再调用object.toString(),再进行比较
    otherwise otherwise false

    总之:除undefined与null外,其他类型都转为number

    相关文章

      网友评论

        本文标题:js类型转换,纯干货

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