前言
上一篇初步介绍了显显式类型转化 这一篇的隐式类型转化是承接上一篇的 JavaScript变量,数据类型以及显式类型转换 隐式类型转化背后,内部调用的都是显式转化的方法
隐式类型转化
isNaN()
这个看看就懂了,其中内部进行了Number()的调用
console.log(isNaN(undefined));
console.log(isNaN(NaN));
console.log(isNaN("a"));
console.log(isNaN(null));
console.log(isNaN(false));
onsole.log(isNaN(true));
console.log(isNaN(123));
console.log(isNaN("123"));
"++""- -""+""-"
加加,减减,一元正负运算 内部调用也是Number()
var a = "123";
a ++;
console.log(typeof(a) + " : " + a);
var b = "abc";
b --;
console.log(typeof(b) + " : " + b);
var c = null;
c ++;
console.log(typeof(c) + " : " + c);
var d = "a";
d = +d;
console.log(typeof(d) + " : " + d);
var e = "123";
e = -e;
console.log(typeof(e) + " : " + e);
“+”加号
加号有一点比较特殊,当加号两边有一侧是字符串的话,那么表达式得到的就是字符串,也就是隐式调用了String()
var a = "a" + 1;
console.log(typeof(a) + " : " + a);
var b = 1 + "";
console.log(typeof(b) + " : " + b);
var c = null + "abc";
console.log(typeof(c) + " : " + c);
“-” “*” “/” “%”
减号,乘号,除号,mod,他们隐式调用的也是Number()
var a = "a" * 1;
console.log(typeof(a) + " : " + a);
var b = 1 - "";
console.log(typeof(b) + " : " + b);
var c = "2" / null;
console.log(typeof(c) + " : " + c);
var d = "1" - 1;
console.log(typeof(d) + " : " + d);
&& || ! if()
与, 或, 非 ,if() 条件判断,均是调用给了Boolean() 这里就不做演示了
">" "<" ">=" "<="
比较大小的判断,若比较符两边有一个是数字,就会进行Number转化,同时返回boolean类型的值
var a = "a" > 1;
console.log(typeof(a) + " : " + a);
var b = 1 < "";
console.log(typeof(b) + " : " + b);
var c = "2" > null;
console.log(typeof(c) + " : " + c);
var d = "1" > 1;
console.log(typeof(d) + " : " + d);
"==" "!="
var a = "1" == 1;
console.log(typeof(a) + " : " + a);
var b = 0 == "";
console.log(typeof(b) + " : " + b);
var c = 0 != null;
console.log(typeof(c) + " : " + c);
var d = 0 == false;
console.log(typeof(d) + " : " + d);
补充最特殊的:
null == undefined 结果为true null === undefined 结果为false NaN == NaN 结果为false
最后,再来给你们看看一个东西吧
这个是为什么,就请自己思考了
Ps:若有错误或者不足,欢迎向我指出