本文详解JavaScript中Boolean、Number和String三个强制类型转换函数的行为。重点区分Number()与parseInt/parseFloat在解析完整值与部分数值时的差异,并说明String()处理null和undefined时不会报错的特性,帮助开发者准确进行数据转换。
JavaScript 强制类型转换函数详解
1. Boolean(value):将指定值转换为布尔类型;
2. Number(value):将指定值转换为数字类型(包括整型或浮点数);
3. String(value):将指定值转换为字符串类型。
首先分析Boolean()函数。当待转换的值满足以下任一条件时,该函数返回true:包含至少一个字符的字符串、非0的数字或对象。若值为空字符串、数字0、undefined或null,则返回false。可通过以下代码进行验证:
代码如下:
var t1 = Boolean("");//返回false,空字符串
var t2 = Boolean("s");//返回true,非空字符串
var t3 = Boolean(0);//返回false,数字0
var t3 = Boolean(1),t4 = Boolean(-1);//返回true,非0数字
var t5 = Boolean(null),t6 = Boolean(undefined);//返回false
var t7 = Boolean(new Object());//返回true,对象接下来看Number()函数。它与parseInt()和parseFloat()功能相似,但核心区别在于:Number()尝试转换整个值,而parseInt()和parseFloat()仅转换开头的数字部分。例如,Number("1.2.3")和Number("123abc")均返回NaN;而parseInt("1.2.3")返回1、parseInt("123abc")返回123、parseFloat("1.2.3")返回1.2、parseFloat("123abc")返回123。Number()会先判断值是否能被完整转换,若不能则返回NaN,若能则调用相应的parseInt或parseFloat逻辑。以下是各值调用Number()后的结果列表:
Number(false) 0
Number(true) 1
Number(undefined) NaN
Number(null) 0
Number("1.2") 1.2
Number("12") 12
Number("1.2.3") NaN
Number(new Object()) NaN
Number(123) 123
最后是String()函数。该函数相对简单,可将所有类型的数据转换为字符串,例如:String(false)结果为"false"、String(1)结果为"1"。它与toString()方法存在显著差异,主要体现在对null和undefined的处理上:
代码如下:
var t1 = null;
var t2 = String(t1);//t2的值 "null"
var t3 = t1.toString();//这里会报错
var t4;
var t5 = String(t4);//t5的值 "undefined"
var t6 = t4.toString();//这里会报错