我不明白为什么在使用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";
。我收到错误消息错误。谢谢你回答我的问题。
答案 0 :(得分:33)
违规行:
var os_autoload_inputs = new Array('searchInput', 'searchInput2',
'powerSearchText', 'searchText');
JSLint not expect看new 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 = [];