What is the reason behind the length of string produced by joining var arr = [,,], like so: var str = arr.join(' ') being one less than length of 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); Advertisement
Answer
As per MDN docs :
If an element is undefined or null, it is converted to the empty string.
In your case, you are creating an array with a particular length without any value(it would be undefined). So while joining there will be length - 1 separators(since undefined already treated as an empty string) means length - 1 spaces(' ').