“对var os_map = {}使用数组文字符号[]”

时间:2009-12-20 14:52:42

标签: javascript jslint

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

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

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

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

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

4 个答案:

答案 0 :(得分:33)

违规行:

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

JSLint not expectnew Array构造函数,你应该使用[]代替:

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

为什么呢? :

1,Crockford不喜欢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

另见:

答案 1 :(得分:3)

改变这个:

var a = new Array(5);

为此:

var a = new [].constructor(5);

答案 2 :(得分:1)

我在that code中读到的第28行是:

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

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

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

但是应该对第27行说同样的话。

答案 3 :(得分:0)

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

只是做

var arrayName = [];