JavaScript中所有隐式类型转换都属于type coercion(类型强制转换)吗
首先明确结论:你列出的4个示例全部属于type coercion(类型强制转换),且JavaScript中所有的隐式类型转换,本质上都属于type coercion范畴。
先理清定义:在ECMAScript的标准定义里,type coercion 特指由JavaScript运行时自动执行、不需要开发者手动调用转换方法的隐式类型转换,和开发者主动写Number('123')、String(456)这类主动触发的显式类型转换完全对应。
我们可以对应你给出的示例逐个验证:
2 + "2":加法运算符遇到混合类型的操作数,自动将数字2转换为字符串后拼接,是典型的隐式转换,属于coercion5 + true:加法运算符遇到布尔类型操作数,自动将true转换为数字1后求和,属于coercion5 + new Number(1):运行时自动将Number包装对象实例拆箱为原始数字值,是自动执行的隐式转换,属于coercion"hello".length:运行时为了让字符串原始值能够调用String原型上的length属性,自动把原始字符串装箱为String包装对象,这个自动执行的转换也属于coercion
关于你问的第二个问题:所有不需要你手动写转换代码、由JS运行时自动完成的类型转换,不管是运算符运算、属性访问、if/while条件判断等场景触发的,全部属于type coercion的范围。
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

