JS类型转换问题:为何String([null,undefined])返回','而非对应字符串?
JS中String()转换
[null, undefined]返回','的底层逻辑 首先明确String()转换不同类型值的规则差异:
- 当传入的参数是原始类型的
null/undefined时,会直接返回对应字面量的字符串形式,也就是你测试得到的'null'和'undefined'。 - 当传入的参数是对象类型(数组属于对象类型)时,
String()会优先调用对象自身的toString()方法,取返回的原始值做字符串转换。
数组重写了默认的toString()方法,其内部逻辑等价于调用数组的join(',')方法,而join()方法有专门的规则:数组中值为null或undefined的元素,在拼接时会被转换为空字符串。这和直接对单个null/undefined调用String()的规则完全独立,是数组toString/join方法单独定义的行为。
对应到[null, undefined]的转换过程:
- 数组第一个元素
null被转换为空字符串 - 数组第二个元素
undefined被转换为空字符串 - 用逗号拼接两个空字符串,最终得到结果
','
相关测试用例
String(null); // 'null' String(undefined); // 'undefined' String([null, undefined]); // ','
内容的提问来源于stack exchange,提问作者Shaqe
相关产品推荐
相关产品推荐

