在使JSLint满意的同时创建一个n大小的数组?

Ate*_*ral 7 javascript arrays jslint

JSlint不喜欢使用Array构造函数,并且没有允许它们的JSLint选项.因此,要创建长度为n的数组,不允许以下内容:

var arr = new Array(n);
Run Code Online (Sandbox Code Playgroud)

以下是我能解决这个问题的唯一方法吗?

var arr = [];
arr.length = 5;
Run Code Online (Sandbox Code Playgroud)

在正常情况下,这不是什么大问题(使用两行代码而不是一行代码),但我很遗憾无法使用简洁的字符串乘法器hack:

function repeat(str, times) {
    return new Array(times + 1).join(str);
}
Run Code Online (Sandbox Code Playgroud)

Dag*_*bit 2

JSLint 很容易被智取。

你可以这样做:

function repeat(str, times) {
    var A = Array;
    return new A(times + 1).join(str);
}
Run Code Online (Sandbox Code Playgroud)

这也可以工作:

function repeat(str, times) {
    return new Array.prototype.constructor(times + 1).join(str);
}
Run Code Online (Sandbox Code Playgroud)

  • 没问题。值得注意的是,为了解决 linter,您实际上生成了更尴尬的代码,因此 linter 所做的与它的预期目的相反。如果您经常遇到这种情况,您可能会考虑研究(或让项目负责人研究)其他 linter。 (3认同)