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;直接转换