类型转换
2023年02月10日
一、规则
Preview
二、分类
-
隐式类型转换: 在执行过程中当js内部期望得到某种类型的值,而实际在那里的值是其他的类型,就会发生隐式类型转换。系统内部会自动调用我们前面说
ToBoolean ( argument )
、ToNumber ( argument )
、ToString ( argument )
,尝试转换成期望的数据类型。 -
显示类型转换: 手动调用
Boolean(value)
、Number(value)
、String(value)
完成的类型转换。
三、原理
-
ToPrimitive ( input [ , PreferredType ] ):
ToPrimitive
将input
装换为基本数据类型,PreferredType
要么不传,要么是number
、string
。-
PreferredType
为number
:-
如果
input
本身就是原始类型,直接返回input
。 -
调用
input.valueOf()
,如果结果是原始类型,则返回这个 结果。-
number.valueOf()
:console.log((1).valueOf(), typeof (1).valueOf()); // 1 number
-
string.valueOf()
:console.log("1".valueOf(), typeof "1".valueOf()); // 1 string
-
boolean.valueOf()
:console.log((true).valueOf(), typeof (true).valueOf()); // true boolean
-
object.valueOf()
:console.log({}.valueOf(), typeof {}.valueOf()); // {} object
console.log({ a: 1 }.valueOf(), typeof { a: 1 }.valueOf()); // { a: 1 } object -
array.valueOf()
:console.log([].valueOf(), typeof [].valueOf()); // [] object
console.log([1, 2].valueOf(), typeof [1, 2].valueOf()); // [ 1, 2 ] object -
function.valueOf()
:console.log(function () {}.valueOf(), typeof function () {}.valueOf()); // [Function (anonymous)] function
-
-
调用
input.toString()
,如果结果是原始类型,则返回这个结果。-
number.toString()
:console.log((1).toString(), typeof (1).toString()); // 1 string
-
string.toString()
:console.log("1".toString(), typeof "1".toString()); // 1 string
-
boolean.toString()
:console.log((true).toString(), typeof (true).toString()); // true string
-
-
-