【JavaScript】:有关js类型转换的那些事...

50 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第14天,点击查看活动详情

1️⃣前言

大家好,我是翼同学。今天笔记的内容是:

  • 简单类型转换

2️⃣内容

JavaScript的类型转换灵活多样,无论是隐式类型转换还是显示类型转换,方法都有很多。具体请往下看:

数字转换为字符串

JavaScript中,如果某处期望使用数字,则会将字符串转换为数字。

举个例子:

"PI:" + 3.14  // => "PI:3.14"

可以看到,在上述例子中,当数字和字符串用加号+相连时,数字会自动转换为字符串。因此我们说,n + ""的效果等价于使用String(n)函数。

另外,为了提高代码可读性,我们也可以显示转换类型。比如使用和String()函数,或者toString()方法。值得一提的是,toString()方法可以可以添加参数radix,用于表示转换基数(进制数),并且radix参数的范围在2~36之间。

举个例子:

var data = 19;
bStr = data.toString(2);	    // => "10011"
oStr = "0" + data.toString(8);	    // => "023"
hStr = "0x" + data.toString(16);    // => "0x13"

最后,再记录两个数字转换为字符串的方法:

  • toExponential(n) :使用指数计数法,此时小数点前只有一位,小数点后有几位由参数n决定

举个例子:

var data = 967.12345;
data.toFixed(0)  // => "967"
data.toFixed(3)  // => "967.123"
data.toFixed(6)  // => "967.123450"
  • toFixed(n) :控制输出数值小数点后的位数,由参数n决定

举个例子:

var data = 967.12345;
data.toExponential(0);  // => "1e+3"
data.toExponential(3);  // => "9.671e+2"
data.toExponential(6);  // => "9.671235e+2"

可以看到,上述的两个方法在使用中,会适当进行补0或者四舍五入

字符串转换为数字

同样的,如果JavaScript期望使用数字,则会将给定的字符串转换为数字。

举个例子:

"4" * "6"  // => 24
"5" / "2"  // => 2.5
"15" - "5" // => 10

当然,如果转换的结果没有意义,则返回NaN

举个例子:

"value" * "5"  // => NaN

另外,在显示类型转换中,除了使用Number()函数外,也可以使用这两个全局函数parseInt()parseFloat()。此时需要注意的是,前者只解析整数,可接受第二个参数用于表示转换的基数(该参数的范围也是2~36),后者整数和浮点数都可解析,并且,如果传入的字符串中,第一个非空字符属于非法的数字直接量,则函数返回NaN

举一些例子:

parseInt("110") 		    // => 110
parseInt("010") 		    // => 10
parseInt("30而立") 		    // => 30
parseInt("0x152")		    // => 338
parseInt("1111", 2) 		// => 15
parseInt("a", 16) 			// => 10
parseInt("2.22") 			// => 2
parseInt("0.18") 			// => 0
parseFloat("0.18") 			// => 0.18
parseFloat("#3.14")		    // => NaN
parseFloat(" 6.66的红包")   // => 6.66

转换为布尔值

JavaScript中,会根据需求自行转换为布尔值。比如将一些真值转换为true,将一些假值转换为false。举例:能转换为false的有空字符串"",关键字nullundefined,数字0(和-0)。

对于显示类型转换,则可以使用函数Boolean()。需要注意的是,如果将对象(包括函数或数组)转换为布尔值,则结果一律为true。即使我们调用new Boolean(false),该对象最后也是为true

3️⃣写在最后

好了,今天的笔记就记到这里。