if以及==的判断
2018-06-26 本文已影响10人
饥人谷_momo
- if(xx){} 会输出什么
- if(number){}, 当number是0或者NaN为false,其他为true
- if(string){}, 空字符串为false,其他为true
- if(null){}, 输出false
- if(undefined){}, 输出false
- if(boolean){},按照布尔值判断
- if(object){}, 输出true
- if(Symbol){}, 输出true
- ==,做相等运算时,一般都要把数据类型转换成数字类型,或者转化为相同的数据类型。
- 如果两个值类型相同,则执行严格相等的运算
- 如果两个值的类型不同
- 如果一个是null,一个是undefined,那么相等
- 如果一个是数字,一个是字符串,先将字符串转为数字,然后比较
- 如果一个值是true/false则将其转为1/0比较
- 如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较
- 其它就不相等了
- 其他类型转化为数字类型使用Number()函数,规则如下:
- 如果是Boolean值,true和false将分别被转换为1和0。
- 如果是数字值,只是简单的传入和返回。
- 如果是null值,返回0。
- 如果是undefined,返回NaN。
- 如果是字符串,遵循下列规则:
5.1 如果字符串中只包含数字(包括前面带加号或负号的情况),则将其转换为十进制数值, 即"1"会变成1,"123"会变成123,而"011"会变成11(注意:前导的零被忽略了);
5.2 如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(同样,也会忽略前导零);
5.3 如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整数值;
5.4 如果字符串是空的(不包含任何字符),则将其转换为0;
5.5 如果字符串中包含除上述格式之外的字符,则将其转换为NaN。