隐式类型转换

简单数据类型转换

 

 1     console.log(1 + true);
 2     //2
 3     Number(true);
 4     //1
 5         + 做为算术运算符会把其他数据类型调用Number();转成数字然后做加法运算;
 6     
 7     console.log(1 + "true");
 8     //1true
 9     String("true");
10     //"true"
11         + 两边有一边是字符串,那这个 + 就是字符串连接符,它会把其他数据类型调用String();方法转成字符串然后拼接;
12     
13     console.log(1 + undefined);
14     //NaN
15         undefined会被转换为NaN
16     
17     console.log(1 + null);
18     //1
19         null会转换为数字 0;
20     
21     console.log("2" > 10);
22     //false
23     Number("2");
24     //2
25     
26     console.log("a" > 10);
27     //false
28     Number("a");
29     //NaN
30         比较运算符的一边是字符串的时候,会调用 Number() 方法把字符串转换成数字在进行比较;
31     
32     console.log("2" > "10");
33     //true
34         当关系运算符两边都是字符串的时候,此时同时转成number然后比较关系。
35         此时并不是按照Number()的形式转成数字,而是按照字符串对应的unicode编码来转成数字,使用 字符串.charCodeAt(字符下标,默认为0) 方法可以查看字符的unicode编码。
36     即 2 > 1;
37     //true
38     
39     
40     console.log(false == 0);
41     //true
42     Number(false);
43     //0
44     console.log(true == 1);
45     //true
46     Number(true);
47     //1
48         布尔值和数字比较时,会把布尔值通过 Number() 转成数字再进行比较,true转成 1,false 转成 049     
50     console.log(false == "");
51     //true
52         字符串和布尔值比较时,会把字符串和布尔值都通过 Number() 转成数字再进行比较
53     
54     无视规则:
55             console.log(null == undefined);
56             //true
57             
58             console.log(NaN == NaN);
59             //false

复杂数据转换

 

1     复杂数据类型转成number数据类型:
2         1.先使用 valueOf() 方法获取原始值,如果原始值不是number数据类型,则使用 toString() 方法转成string;
3         2.再通过 Number() 方法装成number数据类型
4         注意:
5             空数组的toString()方法会得到空字符串,而空对象的toString()方法会得到字符串[object Object];
6             
7     console.log([1,2] == '1,2');
8 //true

逻辑非转换

 

 1     0、-0、NaN、undefined、null、""(空字符串)这几种情况转换布尔类型会得到 false,除了这几种情况外所有数据类型都会得到 true
 2     console.log ( [] == 0 );
 3     //true
 4     console.log ( ! [] == 0 );
 5     //true
 6     console.log ( [] == ! [] );
 7     //true
 8     console.log ( [] == [] );
 9     //false
10     console.log({} == !{});
11     //false
12     console.log({} == {});
13     //false

 

posted @ 2019-11-23 11:01  半糖也甜吖  阅读(154)  评论(0编辑  收藏  举报