JavaScript隐式类型转化详解

140 阅读1分钟

前言

上一篇初步介绍了显显式类型转化 这一篇的隐式类型转化是承接上一篇的 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:若有错误或者不足,欢迎向我指出