Когда вы join
массиве длины n
по аргументу str
, вы создадите новую строку, вставив n - 1
элементов str
, так что один будет между каждым элементом массива. Например:
const arr = ['foo', 'bar', 'baz'];
arr.join(' ')
// results in
// foo bar baz
new Array(n + 1)
создает массив длиной n + 1
, но без элементов. Эти несуществующие элементы при преобразовании в строку с помощью .join
приводят к пустой строке.
this
внутри String.prototype.repeat
- это строка, для которой вызывается функция. Например:
'foo'.repeat(
приводит к вызову String.prototype.repeat
с this
из 'foo'
.
Итак:
new Array(n + 1).join(this)
приводит к новому строка, содержащая n
повторений this
.
Другой способ просмотра, если вызывается 'x'.repeat(2)
, создается следующий массив:
// [<empty>, <empty>, <empty>]
// insert 'x' between each element of the array:
// '' + 'x' + '' + 'x' + ''
// result: 'xx'