我正在做一些JavaScript koans来学习语法,我遇到了一个我感到有点困惑的案例。这是代码:
it("should know properties that are functions act like methods", function () {
var megalomaniac = {
mastermind : "Brain",
henchman: "Pinky",
battleCry: function (noOfBrains) {
return "They are " + this.henchman + " and the" +
Array(noOfBrains + 1).join(" " + this.mastermind);
}
};
var battleCry = megalomaniac.battleCry(4);
expect("They are Pinky and the Brain Brain Brain Brain").toMatch(battleCry);
});
因为battleCry函数创建了一个noOfBrains + 1元素的数组,并且noOfBrains作为4传入,我希望join()能够打印5" Brain"不是4.为什么是4?
谢谢!
答案 0 :(得分:1)
你得到一个大小为5(= 4 + 1)的数组。然后你将它们加在一起。
请注意,Brain
(胶水)仅适用于连接的部分。当你的数组大小为5时,你需要4个“胶水部件”来创建一个字符串。
因此4 Brain
。
如果有人做某事
Array(noOfBrains + 1).map(e => 'Brain').join(' ')
你确实会得到5件物品