基本概念
将值从一种类型转换为另一种类型称为类型转换,类型转换总是返回基本类型值,如字符串、数字和布尔值,不会返回引用类型值。
类型转换分为“显式”和“隐式”:“显式”转换发生在静态类型语言的编译阶段,而“隐式”转换则发生在动态类型语言的运行时。
显式类型转换
非字符串到字符串的类型转换
toString()
方法
数字、布尔值、字符串和对象都有 toString() 方法,但 null 和 undefined 没有。
例子:
var name = "Tom", age = 19, isStudent = true;console.log(name.toString()); //输出:"Tom"console.log(age.toString()); //输出:"19"console.log(isStudent.toString()); //输出:"true"var obj = { name: "Tom" }, arr = [19, 20];console.log(obj.toString()); //输出:"[object Object]"console.log(arr.toString()); //输出:"19,20"
*基本类型值不能直接使用 toString() 方法,所以 JavaScript 引擎会自动为基本类型值创建一个封装对象,然后对该对象调用 toString()。
String()
方法
这个方法能够将任何类型的值转换为字符串,基本的转换规则是:
1、如果值有toString()方法,则调用该方法进行转换;
2、如果值是null,则返回“null”;
3、如果值是undefined,则返回“undefined”。
例子:
console.log(String(11)); //输出:"11"console.log(String(true)); //输出:"true"console.log(String("love")); //输出:"love"console.log(String(null)); //输出:"null"console.log(String(undefined)); //输出:"undefined"console.log(String({ name: "Tom"})); //输出:"[object Object]"console.log(String([1, 2])); //输出:"1,2"
非数字到数字的类型转换
Number()
方法
这个方法可以用于任何数据类型,基本的转换规则是:
1、如果是Boolean值,true和false将分别被转换为1和0;
2、如果是数字值,只是简单的传入和返回;
3、如果是null值,返回0;
4、如果是undefined值,返回NaN;
5、如果是字符串,遵循下列规则:
6、如果是对象,会首先检查该值是否有 valueOf() 方法。如果有,并且可以成功返回基本类型值,那么就使用该方法的返回值进行强制类型转换;如果没有就使用 toString() 的返回值来进行强制类型转换。如果 valueOf() 和 toString() 均不返回基本类型值,会产生 TypeError 错误。
新闻热点
疑难解答
图片精选