我在下面有这段代码,但不太理解输出
function repeatStringNumTimes(str, num) {
if (num <0) {
return ""
} else {
return Array(num+1).join(str)
}
}
console.log(repeatStringNumTimes("abc", 3));
我本以为输出是“abcabcabc”,但如果我在 JS Bin 中使用 console.log(repeatStringNumTimes(“abc”, 3)) 它会生成“abcabc”?
如果我指定 Array(3) - 它不会将字符串连接 3 次吗?为什么在这种情况下只有 2 个?
最佳答案
If I specify Array(3) - Would it not concatenate the string 3 times? Why only 2 in this instance?
console.log([1,2,3].join('abc'))
// outputs 1abc2abc3
请注意,'abc'
是 3 个元素之间连接的分隔符,因此它出现了两次,而不是 3 次。
因此,如果您创建一个空数组,它会显示两次 'abc'
,分隔 3 个空字符串:
console.log(Array(3).join('abc'))
// outputs abcabc
另请注意,还有 String.repeat()
console.log('abc'.repeat(3))
// outputs abcabcabc
关于javascript - Array() 方法的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75286188/