gpt4 book ai didi

javascript - 此函数中 Array() 的上下文

转载 作者:行者123 更新时间:2023-12-01 11:11:01 25 4
gpt4 key购买 nike

  it("should know properties that are functions act like methods", function() {
var meglomaniac = {
mastermind : "Brain",
henchman: "Pinky",
battleCry: function(noOfBrains) {
return "They are " + this.henchman + " and the" +
Array(noOfBrains + 1).join(" " + this.mastermind);
}
};

var battleCry = meglomaniac.battleCry(4);
expect('They are Pinky and the Brain Brain Brain Brain').toMatch(battleCry);
});

这段代码(第 7 行)中 Array 的定义是什么?我查了一下,它看起来像是一个 Array.of() 命令,它生成一个长度为 n 的空数组,在本例中为 5?那么,假设这是正确的假设,为什么最终只有 4 个大脑输入?还是这个 array() 在做其他事情?

最佳答案

battleCry(4) 意味着 Array(noOfBrains + 1) 的长度确实为 5:

[empty, empty empty, empty, empty]

但是当您.join 这 5 个元素时,您只在它们之间的空格 中插入了一些东西,而且只有 4 个空格:

[empty, empty empty, empty, empty]
// ^ ^ ^ ^

因此,您最终在结果字符串中出现了 4 次 this.mastermind

这段代码相当困惑。我非常喜欢 .repeat 之类的东西:

var meglomaniac = { 
mastermind : " Brain",
henchman: "Pinky",
battleCry: function(noOfBrains) {
return `They are ${this.henchman} and the${this.mastermind.repeat(noOfBrains)}`
}
};

var battleCry = meglomaniac.battleCry(4);
console.log(battleCry === 'They are Pinky and the Brain Brain Brain Brain');

Array 只是数组构造函数。它实际上并没有什么特别之处,它只是创建一个数组,该数组具有参数的 length(当传递一个数字时)。

关于javascript - 此函数中 Array() 的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60519007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com