首页 > 解决方案 > 为什么 [,,].join(' ') 长度比数组长度小一?

问题描述

string连接产生的长度背后的原因是什么var arr = [,,],例如:var str = arr.join(' ')比长度少一arr

var literal_arr = [,,],
    joined_literal_arr = literal_arr.join(' '),
    constructor_arr = new Array(2),
    joined_constructor_arr = new Array(2).join(' ');

console.log("Literal array notation length = ", literal_arr.length);

console.log("Joined literal array notation string length = ", joined_literal_arr.length);

console.log("Constructor array notation length = ", constructor_arr.length);

console.log("Joined constructor notation string length = ", joined_constructor_arr.length); 

标签: javascript

解决方案


根据MDN 文档

如果元素未定义或为 null,则将其转换为空字符串

在您的情况下,您正在创建一个没有任何值的具有特定长度的数组(它将是undefined)。所以在加入时会有length - 1分隔符(因为undefined已经被视为空字符串)意味着length - 1空格(' ')。


推荐阅读