なぜこの違法厳格モードになっていますか?
-
29-09-2019 - |
質問
ええ、ああ、そうそう、厳格なモードのアカウン周辺になんという将来の...
では、なぜここに
$('#'+ $(this).attr('id').replace('control-', 'legend-')).fadeIn();
...いES5厳格なモードになっていますか?
るのは僕の審?JSLint:
Problem at line 516 character 18: Strict violation.
が入っているのか、それとももう少し詳細なか...?
編集:
混乱を避けるため、この独自のコード:
function displayLegend() {
$('#'+ $(this).attr('id').replace('control-', 'legend-')).fadeIn();
}
解決
一部の試行錯誤のこのコード JSLint
"use strict";
var that="dd";
function $(x){return x;}
$('#'+ $(this).attr('id').replace('control-', 'legend-')).fadeIn();
$(this);
図うに思っていたが、あるきっかけでしましょう this
としてのパラメータとします。変化するも this
esる that
sさんのトリガーのエラーになります。
として 仕様 "と言ってい
の場合 この 評価内の厳しいモードでコードが、そ この 値が惹るオブジェクトです。A この 価値の nullの場合 または 未定義 なに変換され、グローバルオブジェクトやプリミティブの値に変換されませんのラッパーオブジェクト。 の この 渡された値を関数呼び出しを含むけた電話を使用 機能です。試作品です。適用 や 機能です。試作品です。電話 なの強要、渡された この 値をオブジェクト (10.4.3, 11.1.1, 15.3.4.3, 15.3.4.4). 【私を重視]
としてジョン-Resig 書き込みます,
最後に、長年( 迷惑)のバグが解決されて:の場合 がnullの場合は未定義で惹 て世界のオブジェクトです。Strictモード現を防ぐこから うにして行われているのかを知る例外をスローします です。
(function(){ ... }).call( null ); // Exception
また、ラインのコード内部関数宣言ですがエラー JSLintは使用中の機能を発現しない.うJSLint誤解を解析し、機能の宣言を見る this
, が、まだ未定義では、現時点では、例外がスローされます。
この点、私の見 Juriy Zaytsev('kangax'):
なので本当に問題なのか?
いことを理解する 厳格モードにすることは要件になっていないと, ものではあ 単なるオプションになります。そこにある を厳格なルールの方 を必要としている人への対応 (満)結果をもたらす。
更新: 最後になりましたかの説明を付けました。読まれた方 このスレッド, 心からのメッセージ#1512以降、読み取ること
のES5/厳格に禁止 漏れのグローバルオブジェクト うES3はpromiscuously.ES5/厳しい事業を ダイナミックに組合せ、及び一部の作業 静.JSLintはそのすべての 仕事を静的、専門のスキルを必要とせず、まも より厳しい方のために、ヘ お客様のプログラムです。 [ダグラスCrockfordに#1553]
みんなに見て欲しい、その有効な点はこちらだためのグローバル名前空間の汚染んに使用関数の宣言が関数表現内の個人の名前空間だった。その他記載されているスレッドのエラーメッセージは明確だけるかどうかを投げるように、警告との出会いの機能宣言)
他のヒント
以下の何David Dorwardと見せてくれるJSLintのテストです。このはなんとも不思議などの理由でやっています。
前:(問)
変更後:
var displayLegend = function () {
$('#'+ $(this).attr('id').replace('control-', 'legend-')).fadeIn();
};
編集:
またダグラスCrockford:
JSLintのみで行えるように、この厳格モード 機能が明らかに 意しています。なので 書
object.property = function () { ... this ... };
この確認を行うという、スペックを除くのでより鮮明に見せなければならない!