为什么" Brain"在此代码段中打印4次而不是5次?

时间:2017-12-11 21:54:05

标签: javascript syntax

我正在做一些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?

谢谢!

1 个答案:

答案 0 :(得分:1)

你得到一个大小为5(= 4 + 1)的数组。然后你将它们加在一起。

请注意,Brain(胶水)仅适用于连接的部分。当你的数组大小为5时,你需要4个“胶水部件”来创建一个字符串。

因此4 Brain

如果有人做某事

Array(noOfBrains + 1).map(e => 'Brain').join(' ')

你确实会得到5件物品