美文网首页
关于JavaScript的隐式转换

关于JavaScript的隐式转换

作者: 疯狂的阿金 | 来源:发表于2018-01-26 20:21 被阅读77次

    一、 数字与数字之间的转换

    1.字符串加数字,数字就会转成字符串。

    2.数字减字符串,字符串转成数字。如果字符串不是纯数字就会转成NaN。字符串减数字也一样。两个字符串相减也先转成数字。

    3.乘,除,大于,小于跟减的转换也是一样。

    console.log(10+'20')  //2010

    console.log(10-'20' )   //-10

    number console.log(10-'one')   //NaN not a number

    console.log(10-'101a')   //NaN

    console.log(10*'20')    //200

    number console.log('10'*'20')    //200

    number console.log(20/'10')    //2 numbe

    r console.log('20'/'10')    //2 number

    console.log('20'/'one')    //NaN


    二、关于 ==

    1.undefined等于null

    2.字符串和数字比较时,字符串转数字

    3.数字为布尔比较时,布尔转数字

    4.字符串和布尔比较时,两者转数字

    console.log(undefined==null) //true

    console.log('0'==0) //true 字符串转数字

    console.log(0==false) //true 布尔转数字

    console.log('0'==false) //2个都转成数字

    console.log(null==false) //false

    console.log(undefined==false)//false


    三 、比较的隐式转换

    1. 数组和布尔值比较

    对象和布尔值进行比较时,对象先转换为字符串,然后再转换为数字,布尔值直接转换为数字

    [ ] == true;  //false  [ ]转换为字符串' ',然后转换为数字0,true转换为数字1,所以为false

    [ ] == false;

    ![ ] == false;

    这两个的结果都是true,第一个是,对象 => 字符串 => 数值0 false转换为数字0,这个是true应该没问题,

    第二个前边多了个!,则直接转换为布尔值再取反,转换为布尔值时,空字符串(' '),NaN,0,null,undefined这几个外返回的都是true, 所以! [ ]这个[ ] => true 取反为false,所以[ ] == false为true

    2. 数组和字符串比较

    对象和字符串进行比较时,对象转换为字符串,然后两者进行比较。

    [1,2,3] == '1,2,3' // true  [1,2,3]转化为'1,2,3',然后和'1,2,3', so结果为true;

    3. 数组和数字比较

    对象和数字进行比较时,对象先转换为字符串,然后转换为数字,再和数字进行比较。

    [1] == 1;  // true  `对象先转换为字符串再转换为数字,二者再比较 [1] => '1' => 1 所以结果为true

    4.对象和数组布只有在比较布尔值时候有所不同

    //要注意空数组([ ])和空对象({ }):

    console.log(Boolean([ ])) //true

    console.log(Boolean({ })) //true

    console.log(Number({ })) //NaN

    console.log(Number([ ])) //0

    console.log({ } == false) //false

    console.log(!{ } == false) //true


    四 、在多个加号或者减号的时候

    在加号后多个加号或者减号会进行隐式转换

    console.log(1 + +"2" + "2");//32

    console.log(1 + + +"2" + "2");//32

    console.log(1 + -"1" + "2");//02

    console.log(+"1" + "1" + "2");//112

    console.log( "A" - "B" + "2");//NaN2

    console.log( "A" - "B" + 2);//NaN

    console.log("b"-2)//NaN

    如果有错误请大家积极指出。

    相关文章

      网友评论

          本文标题:关于JavaScript的隐式转换

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