数据类型转换
Posted restart77
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型转换相关的知识,希望对你有一定的参考价值。
1.强制转换
1.1 Number()
(1)原始类型值
Number(234 ). //234. 数值转换后i还是原来的值
Number(‘234‘ ). //234。字符串如果可以被解析为数值,则转换后为相对应的值
Number( ‘234abd‘ ). //NaN字符串如果不可以被解析为数值,则转换后为NaN
Number( ‘‘ ). //0。 空字符串直接解析为0
Number(false ) & Number(true ). //0 & 1 布尔值串true 转为1 false转为0
Number( undefined ). //NaN undefined转换为NaN
Number(null) //0 null直接转为0,Number函数将字符串转为数值,要比parseInt函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN。parseInt逐个解析字符,而Number函数整体转换字符串的类型,parseInt和Number函数都会自动过滤一个字符串前导和后缀的空格
例如:parentInt(’42 abc’) //42
Number(’42 abc’) //NaN
(2)对象
Number({a:1}). //NaN
Number([1,2]) //NaN
Number([1]) //1 只有单个数值的数组转换才不是NaN
1.2 String()
(1)原始类型值
String(234 ) //’234‘ 数值转换后为相应的字符串
String(‘234‘ ). //‘234’。字符串转换后还是相对应的值
String(false &String(true ). //‘false‘ & ’true‘ 布尔值串true 转为‘true’ false转为’false‘
String( undefined ). //‘undefined’ undefined转换为’undefined‘
String(null) //’null‘ null直接转为’null
(2)对象
String({a:1}). //‘[object,object]’ 如果是对象,则返回类型字符串
String([1,2,3]) //‘1,2,3’ 如果是数组,则返回该数组的字符串形式
1.3 Boolean()
Boolean函数可以将任意类型的值转为布尔值
注意:除了以下五个值的转换结果为false,其他的值全部为true。
Boolean(undefined) //false undefined
Boolean(null) //false null
Boolean(0) //false -0 或者+0
Boolean(NaN) //false NaN
Boolean(‘‘) //false 空字符串
2.自动转换
遇到 下边三种情况,javascript会强制转换
123 +’abc’. //‘123abc’对不同类型的数据相互运算时
If(’abc’){
Console.info(‘hello’) //‘hello’ 对非布尔值类型的数据请求布尔值
}
+ {f00:’bar’} 或 -[1,2,3] //NaN 对非数据类型的值使用一元运算符(即+ 或 - )
自动转换的规则是:这里预期是什么类型的值,就调用该类型的转换函数,但是如果该位置即可以是字符串,也可能是数值,那么默认转为数值。由于自动转换具有不确定性,而且不易除错,建议在预期为布尔值、数值、字符串的地方,全部使用Boolean、Number和String函数进行显式转换。
2.1自动转换为布尔值
遇到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参数自动转换为布尔值
2.2自动转换为字符串
字符串的自动转换,主要发生在字符串的加法运算时。当一个值为字符串,另一个值为非字符串,则后者转为字符串
2.3自动转换为数值
遇到预期为数值的地方就会将参数值自动转换为数值。除了加法运算符(+)有可能把运算子转为字
符串,其他运算符都会把运算子自动转成数值
3.隐式转换
涉及隐式转换最多的是+ 和 ==
其中 +运算符即可数字相加,也可以字符串相加。所以转换时很麻烦。== 不同于===,故也存在隐式转换。- * / 这些运算符只会针对number类型,故转换的结果只能是转换成number类型
数字和字符串如果使用+运算符进行操作,那么会将数字先转换为字符串,然后进行字符串连接操作:
var antzone = "antzone”;
var num = 8;
console.log(antzone+num);//antzone8
如果有布尔型参与,那么首先会将布尔值转换为对应的数字或者字符串,然后再进行相应的字符串连接或者算数运算
var bool = true;
var num = 10;
console.log(bool + num);//11 先将true转换为数字1,然后再进行算数加运算。
var bool = true;
var str=‘123’;
console.log(bool + str);//true123。 true转换为字符串‘true’,然后再进行字符串连接运算。
console.log(undefined+1);//NaN //和数字进行计算,undefined会转化成NaN
console.log(null+1);//0 //和数字进行计算,null会转化为0
如果一个操作数为string、boolean、null、undefined,则在后台调用Number()函数,将其转换成数值,再进行操作。
var bool = true;
var num = "8”;
console.log(bool - num);//-7
以上是关于数据类型转换的主要内容,如果未能解决你的问题,请参考以下文章
JS的数据类型判断函数数组对象结构处理日期转换函数,浏览器类型判断函数合集
sql 日期转换代码片段 - Dato,120,konvertere
HTML Bookmarklet模板:将任何JavaScript代码片段转换为Bookmarklet
结合两个代码片段?将用户输入的 Youtube url 转换为嵌入 url,然后将 iframe src 替换为转换后的 url