js数据类型 隐式转换

2018-10-17  本文已影响0人  牛大嘴

隐式转换

因为对象在跟Boolean比较时 对象先转换为字符串 在转换为Number 然后两者进行比较
空对象转换 字符串 '' Number('') 返回 0 0==false

    var arr = []

    if(arr){
        console.log('true') //执行 
    }

    if(arr==false){
        console.log('true') //执行  因为对象在跟Boolean比较时 对象先转换为字符串 在转换为Number 然后两者进行比较 

        //空对象转换 字符串 '' Number('') 返回 0   0==false 
    }

因为Number({}) 返回NaN NaN不等于false 所以不执行

    var json = {}

    if(json){
        console.log('true') //执行 
    }

    if(json==false){
        console.log('false') //error 因为Number({}) 返回NaN  NaN不等于false 所以不执行
    }

因为对象在跟字符串比较时 对象转换成字符串 然后两者在进行比较

    var arr = [1,2,3]

    var str = '1,2,3'

    if(arr==str){
        console.log('true')  // 因为对象在跟字符串比较时 对象转换成字符串 然后两者在进行比较
    }

因为对象在跟数字比较时 对象先转换成字符串 在转换成数字 然后两者在进行比较

    var arr = ['1']

    if(arr==1){
        console.log('true')  //因为对象在跟数字比较时  对象先转换成字符串 在转换成数字 然后两者在进行比较 
    }

隐式转换

    var a = 1;
    a = a + ""
    console.log(typeof a)  //String 

    var b = "1"
    b = + b
    console.log(typeof b)  //Number

    var c = 1
    c = !!c
    console.log(typeof c)  //Boolean

    console.log(null==undefined) //true  二者跟其它比较返回false
    
    console.log(Number(null)) //返回 0

今天先跟大家分享到这.

上一篇下一篇

猜你喜欢

热点阅读