私はJavaScriptプログラミング(および一般的なスクリプト言語)に不慣れですが、構文エラーを作成したり、誤ってグローバル変数を宣言したりするときに、JSLintを使用して支援してきました。
ただし、JS Lintではカバーできないシナリオがあり、非常に便利だと思います。以下のコードを参照してください。
(function () {
"use strict";
/*global alert */
var testFunction = function (someMessage) {
alert("stuff is happening: " + someMessage);
};
testFunction(1, 2);
testFunction();
}());
testFunctionに間違った数のパラメーターを渡していることに注意してください。意図的にパラメータを省略したり、そのようなパラメータを追加したりするような状況になるとは思いません。ただし、JSLintもJSHintもこれをエラーとは見なしません。
私のためにこれをキャッチする他のツールはありますか?または、そのようなパラメータを渡すことでエラーチェックを行うべきではない理由がありますか?
これは通常、静的分析ツールでは不可能です。これにはいくつかの理由があります。
関数として呼び出されるプロパティが期待する関数であるという保証はありません。このスニペットを検討してください:
var obj = { myFunc : function(a,b) { ... } };
var doSomething(x) { x.myFunc = function(a) { ... }; };
doSomething(obj);
obj.myFunc();
をmyFunc
呼び出した後、異なる数の引数が必要になることを知る方法はありませんdoSomething
。
JavaScriptは動的言語であり、それを受け入れて受け入れる必要があります。
意図されていない問題をキャッチするためにリンティングに依存する代わりに、チェックを行う関数に前提条件を追加することをお勧めします。
次のようなヘルパー関数を作成します。
function checkThat(expression, message) {
if (!expression) {
throw new Error(message);
}
}
次に、次のように使用します。
function myFunc(a, b) {
checkThat(arguments.length === 2, "Wrong number of arguments.");
また、適切な単体テストを行うと、本番環境でこのエラーメッセージが表示されることはありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加