加入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);
根据MDN docs:
如果元素未定义或为null,则将其转换为空字符串。
在您的情况下,您正在创建一个具有特定长度的数组,没有任何值(它将是undefined
)。所以在加入时会有length - 1
分隔符(因为undefined
已被视为空字符串)意味着length - 1
空格(' '
)。
哦!我认为join()方法用于将数组(或类数组对象)的所有元素组合成一个字符串并返回该行。
例如。
var elements = ['Fire', 'Air', 'Water'];
console.log(elements.join(''));
//预期产量:“Fire-Air-Water”
并且...如果您尝试组合空白数组,Join()仅返回组合字符串。因此,对于您的示例包括一个组合字符串,它返回长度 - 1.如果您尝试使用长度为3的数组,则返回长度为2。
这很简单,因为
.join
将使用separator
作为参数连接数组元素它不会在最后一个元素之后和第一个元素之前附加
separator
将仅在元素之间放置
separator
。希望这能清除你的困惑!!