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 */

オブジェクト (、これは{}) を主張することは問題ないはずですが、JSLint は空の配列 (、これは[])を使用することを提案しています。

: 答えが見つかりました。私は間違っていた。に問題はありません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、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

参照:

于 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 に答える