JavaScript基础----隐式转换

不同类型的变量比较要先转类型,叫做类型转换,类型转换也叫隐式转换。隐式转换通常发生在运算符加减乘除、等于、还有小于、大于等。js隐式转换,可以说是一个很大的坑了,下面就来侃一侃js隐式转换的规律。

1. ==隐式转换

如图,js在隐式转换(==)的时候,会按图示进行转换:

 关于==隐式转换的规则,可以概括如下几点:

        1. 字符串和数字比较时,字符串转数字;

        2. 数字为布尔比较时,布尔转数字;

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

        4. 对象和布尔比较时,两者转数字;

        5. 对象和数值比较时,对象转数字;

举个例子:

[1,2,3] == '1,2,3' //true  [1,2,3]转化为'1,2,3',故结果为true;

'0' == true;  //false  '0'转换成数字0,true转换成数字1,故结果为false

特殊情况: 

        1. undefined==null;

        2. 只有undefined、null、NaN、0、‘’会被转换为false,其余都为true;

        3. NaN和任何值都不相等, 包括NaN本身;

        4. null和undefined在进行比较的时候,不会进行类型转换。

        即:0 == null                         //false; 

               0 == undefined               //false;

               false == null                    //false;

               false == undefined         //false;

               true == null                     //false;

               true == undefined           //false;

               '' == null                          //false;

               '' == undefined                //false;

2. 算数运算

转换规则:

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

                   2. 数字减字符串(或字符串减数字,或字符串减字符串),字符串转成数字。如果字符串不是纯数字就会转成NaN

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

举个例子:

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

console.log(10 - '20')    //-10 number
console.log(10 - 'one')   //NaN
console.log(10 - '101a')  //NaN
console.log(10 * '20')    //200 number
console.log('10' * '20')  //200 number
console.log(20 / '10')    //2 number
console.log('20' / '10')  //2 number
console.log('20' / 'one') //NaN

 参考链接:https://www.cnblogs.com/chenmeng0818/p/5954215.html

                   https://blog.csdn.net/sinat_29454619/article/details/74075216

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章