首页 > 代码库 > javascript 隐式转换
javascript 隐式转换
学习是一个枯燥无味的过程,有时候我们需要知道一些属性或者用法。但是那完全是不够的。当你还是个孩子的时候,也许你的衣服鞋子足够你穿,随着你年龄的增长,身高、体重增加。这时候你就会告诉妈妈,给我买新衣服。其实我们码农也是这样子的,当你在代码的世界里奋斗了几年,你就会发现自己真的缺少几套新衣服。而我们只能自己努力去找寻这些衣服。
一、运算符的隐式转换
首先我们来看一个例子
var a=12,b="4",c=true,d=[];
//先看看+运算符操作
console.log(a+b);//124
console.log(b+a);//412
console.log(c+a);//13
console.log(d+a);//12
//再看看-号运算符操作
console.log(a-b);//8
console.log(b-a);//-8
console.log(b-c);//3
console.log(b-d);//4
//再看看/运算符操作
console.log(a/b);//3
console.log(b/a);//0.3333333333333333
console.log(b/c);//4
console.log(b/d);//Infinity
//再看看*运算符操作
console.log(a*b);//48
console.log(a*c);//12
console.log(a*d);//0
//再看看%求余操作
console.log(a%b);//0
通过上边的例子可以总结为:
1.+两边类型不同的时候,数值+[],与布尔值会隐式转换。
2.遇到数值+字符串的时候直接字符串拼接。
3.遇到都是数值的时候计算结果。
二、if语句的隐式转换
除了undefined ,null,false,"",+0,-0,NaN;之外。if("0"){}其他值都是正值。
if("0") { console.log("0"); } if("undefined") { console.log("undefined"); } if("null") { console.log("null"); } if("NaN") { console.log("NaN"); }
在这里一定要告诉小伙伴们(前端与后台)不要定义这样的数据,以至于你判断失误。
三、函数参数的隐式转换
function fn(a){
console.log(a+"123")
}
fn(01);
//结果是多少呢???
相信大家肯定会出错,不信你猜猜看??结果是1123;
再举个例子
function fn(a){ console.log(a+"123") } fn(010);
//结果多少呢???
相信大家肯定会觉得是10123。其实答案是8123;
四、对象的隐式转换
看个例子
3*{valueOf:function(){ return 2; },toString:function(){ return "4"; }}
//结果多少呢?
答案是6。如果没valueOf方法答案是12。如果valueOf与toString都没有则返回NaN
总结:
javascript中的隐式转换还是需要大家时刻注意的,稍微不注意就会出现一些问题。之前我用if做类型判断的时候都出现过类似问题,当时还是懵懂少年,没有去深入追究。希望这篇文章对大家有所帮助。
javascript 隐式转换