一、 数字与数字之间的转换
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
如果有错误请大家积极指出。
网友评论