feat: 添加js隐式类型转换
This commit is contained in:
parent
4c210cb365
commit
7475dfdaf1
47
js/js类型隐式转换.js
Normal file
47
js/js类型隐式转换.js
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// 1.数字与字符串比较时会把字符串转换为数值,如果字符串不能转换为数值就转换成Nan,Nan与任何类型比较都为false
|
||||||
|
// 2. boolean类型和其他类型比较时,会转换为数值,载按1比较
|
||||||
|
// 3. null和undefined只有相互比较,或自身比较才为true
|
||||||
|
console.log(0 == ''); // 空字符,空白字符都会转换成0, true
|
||||||
|
console.log(0 == '0'); // '0'可以转换为数值0,true
|
||||||
|
console.log(2 == true); // true会转换成1,false
|
||||||
|
console.log(2 == false); // false会转换成0,false
|
||||||
|
console.log('false' == false); // false转换为0, 'false'转换为Nan,false
|
||||||
|
console.log(0 == false); // false转换为0, true
|
||||||
|
console.log(false == undefined);// 没有与null,或自身比较,false
|
||||||
|
console.log(false == null); // 没有与undefine,或者自身比较,false
|
||||||
|
console.log(null == undefined); // undefind和null比较为true
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 1.其他类型和字符串相加时都会被认为是字符串拼接 null会转换为'null', undefined会转换为'undefined'
|
||||||
|
|
||||||
|
console.log(null + '1' == null + 1); // 'null1'与 1, false
|
||||||
|
console.log(null + 1 == 1); // null转换为0,true
|
||||||
|
console.log(null == 0); // 记住前面讲的,null只有和undefin或者自身才等于true,false
|
||||||
|
console.log(null == undefined); // true
|
||||||
|
console.log(null + 1 == undefined + 1); // undefined + 1为Nan,Nan和任何变量都不相等,包括自身,false
|
||||||
|
console.log(null + null == undefined + undefined);// 与上面同理,false
|
||||||
|
|
||||||
|
var obj1 = {
|
||||||
|
a: 1,
|
||||||
|
b: 2,
|
||||||
|
valueOf: function(){
|
||||||
|
return this.a + this.b
|
||||||
|
},
|
||||||
|
toString: function(){
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var obj2 = {
|
||||||
|
toString: function () {
|
||||||
|
console.log("没有调用");
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(obj1 + !!obj2);
|
||||||
|
// 对象与其他类型做加法运算时会会优先调用valueOf将自己转换为原始类型,如果没有valueof
|
||||||
|
// 则调用toString,上面的Obj1中有valueof,所以为3 + !!obj2,!!会将一个变量转换为
|
||||||
|
// 布尔类型,只要时truthy就转换为true,不接收任何方法的返回值,所以!!obj2位true, 3 + true = 4
|
Loading…
x
Reference in New Issue
Block a user