11

我不明白为什么当我使用 JavaScript 文件运行 JSLint 时会收到错误消息。

如果我在JSLintos_map = {}; Problem at line 28 character 36: Use the array literal notation [].中运行此代码,我会收到消息 var 。JSLint 的选项如下。

/*jslint onevar: true, browser: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, strict: true, newcap: true, immed: true */

声明对象 (, is {}) 应该没问题,但 JSLint 建议使用空数组 (, is [])

: 我找到了答案。我错了。没什么不好的var os_map = {}。该代码显示在错误消息中,因为我没有使用"require strict";. 我收到错误消息错误。谢谢回答我的问题。

4

4 回答 4

33

违规行:

var os_autoload_inputs = new Array('searchInput', 'searchInput2',
                                   'powerSearchText', 'searchText');

JSLint 不希望看到new Array构造函数,您应该使用 [] 代替:

var os_autoload_inputs = ['searchInput', 'searchInput2',
                                   'powerSearchText', 'searchText'];

为什么?:

1、克罗克福德不喜欢new

2,Array对象可以被覆盖:

Array = {};
new Array(); // TypeError: Array is not a constructor

3、用法不一致,例如:

var a = new Array(5); // empty 5 elements array
var b = [5]; // 1 element array containing the 5 number on index 0

也可以看看:

于 2009-12-20T15:08:38.453 回答
3

改变这个:

var a = new Array(5);

为了这:

var a = new [].constructor(5);
于 2014-03-01T19:18:40.610 回答
1

对该代码中第 28 行的阅读是:

var os_autoload_forms = new Array('searchform', 'searchform2', 'powersearch', 'search' );

...确实适合使用文字数组语法的地方:

var os_autoload_forms = ['searchform', 'searchform2', 'powersearch', 'search' ];

不过,它应该对第 27 行说同样的话。

于 2009-12-20T14:55:25.023 回答
0

第 16 行字符 32 处的问题:使用数组文字符号 []。如果我在 JSLint 中运行此代码。JSLint 的选项如下。

做就是了

var 数组名 = [];

于 2014-11-11T06:01:06.467 回答