js中的隐式转化和强制转化

js中数据之间存在着隐式转化和强制转化,下面简单介绍一下。

隐式转化:

1.使用运算符:+ - * / %

1.使用"+“号,当一个加号两边出现双引号的时候表示拼接成一个字符串(暗含就是将其转化为字符串)
2.使用”-"、“*”、"/"等运算符进行计算时会将纯数字的字符串转化为数值类型进行运算(其实理解对数值先进行了Number()处理再进行运算的)比如说是:console.log(“100”-1),这样是可以进行运算的或者(“10”*3)也是可以进行运算的。如果字符中包含了非数字符会出现计算出错NaN的样式。

2.比较运算符:>、<、>=、<=、== 、===

当用到比较运算符,如果是纯数字的字符串,会将其转化位数字类型然后进行比较。

var  str1 = "123";
			 var str2 = "1234";
			 //纯数字的进行比较,会进行隐式转化
			 console.log(str1 < str2);
			 //结果返回true

如果不是纯数字的会按照字符串逐位比较,直到有一个比较结果。

var  str1 = "Bbc";
			 var str2 = "Abc";
			 //非数字,按照逐位进行比较,如果第一位相等就换第二位
			 console.log(str1 < str2);
			 //结果返回false

==.若是比较字符类型

var  str1 = "123";
			 var str2 = "123";
			//比较两个数是否相等会先将两个数进行隐式转化
			 console.log(str1 == str2);
			//结果为true
var  str1 = 123;
			 var str2 = "123";
			//比较两个数是否相等会先将两个数进行隐式转化
			 console.log(str1 == str2);
			//结果为true

可见==存在隐式转化
===不存在隐式转化,会比较数据类型(两个相等,才叫相等)

var  str1 = 123;
			 var str2 = "123";
			 console.log(str1 === str2);
			//结果为flase

3.在if中也存在隐式转化
0、“”、null、undefined、NaN在if中会转化为false。

强制类型转化
1.字符转数值
  parseInt():从左向右依次转换,能转则转,不能转停止;如果第一位就不能转,直接NaN;不识别小数点。
 parseFloat():等同于parseInt,同时可以识别小数点
 Math.round():严格转换,不允许出现任何非数字的字符,否则NaN;取最接近的整数
 Number():严格转换,不允许出现任何非数字的字符,否则NaN;直接转换