問題タブ [use-strict]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 「厳密に使用する」Pythonコンパイラが必要ですか?
Python 用の静的解析ツールは存在しますが、コンパイル時のチェックは、Python が採用しているランタイム バインディングの哲学とは正反対の傾向があります。標準の Python インタープリターを静的分析ツールでラップして、「 use strict 」のような制約を強制することは可能ですが、そのようなものが広く採用されているとは思えません。
「厳密な使用」の動作を不要または特に望ましくないものにするPythonについて何かありますか?
あるいは、Perl が広く採用されているにもかかわらず、"use strict" 動作は Perl では不要ですか?
注: 「必要」とは、「実質的に必要」という意味であり、厳密には必要ではありません。明らかに「use strict」なしで Perl を書くことはできますが、(私が見た限りでは) ほとんどの Perl プログラマーはそれを使用しています。
注: Python インタープリター ラッパーは、「use strict」のような制約を必要とする必要はありません。通常のインタープリターでは無視される「use strict」と同様の疑似プラグマを使用できます。言語レベルの機能を追加することについて話しているのではありません。
更新: コメントごとに Perl で "use strict" が何をするかを説明します。(公式ドキュメントへのリンクは最初の段落にあります。)
「use strict」ディレクティブには 3 つの異なるコンポーネントがあり、そのうち 2 つだけが本当に興味深いものです。
use strict vars: プログラム内のレキシカル スコープ変数の使用を静的にチェックします。
global
(Python では、基本的にスコープとスコープしかないことに注意してくださいlocal
)。多くの Python リンターは、この種のものをチェックします。それができる唯一の静的分析であるため、リンターは、あなたが単純な字句スコープを使用していると想定し、その意味で間違っているように見えることについては、あなたが黙るように言うまで警告します。すなわち名前空間で特別なことをしていない場合、これはタイプミスをチェックするのに役立ちます。
use strict refs: シンボリック名前空間の逆参照を防ぎます。Python に最も近いものは、 and を使用
locals()
しglobals()
てシンボリック バインディングと識別子の検索を行うことです。use strict sub: Python には実際の類似物はありません。
javascript - JavaScriptで「usestrict」は何をしますか、そしてその背後にある理由は何ですか?
最近、JavaScriptコードの一部をCrockfordのJSLintで実行したところ、次のエラーが発生しました。
1行目の文字1の問題:「usestrict」ステートメントがありません。
検索をしてみると"use strict";
、JavaScriptコードに追加する人がいることに気づきました。ステートメントを追加すると、エラーが表示されなくなりました。残念ながら、Googleはこの文字列ステートメントの背後にある歴史の多くを明らかにしませんでした。確かに、JavaScriptがブラウザによってどのように解釈されるかと関係があるはずですが、その効果がどうなるかはわかりません。
それで、それは"use strict";
何についてであり、それは何を意味しますか、そしてそれはまだ関連していますか?
現在のブラウザのいずれかが文字列に応答し"use strict";
ますか、それとも将来使用するためですか?
javascript - Javascript: プロトタイプ メソッド エラー?
このコードを実行すると、「TestFunc が定義されていません」というエラーが表示されます...
...このコードから実行されます:
javascript - 厳密モードでこれが違法なのはなぜですか?
ええ、ええ、私は知っています、厳密なモードはまだ出回っていませんが、実際には、私は将来を計画しています...
それで、これはなぜですか:
... ES5 Strictモードでは許可されていませんか?
それとも私は誤解していますか?JSLint:
もう少し冗長になりますか?
編集:
混乱を避けるために、元のコードの詳細を次に示します。
javascript - Javascript:「usestrict」の他に、他にどの「use」ディレクティブがありますか?
その上、他use strict
にどのuse
ディレクティブがありますか?
javascript - Javascript/jsLint: "use strict" を使用する場合に jQuery(this) を置き換えるもの;
次のコードを jslint で検証すると、次のエラーが発生します。
4 行目 29 文字目の問題: 厳密な違反。
5 行目 56 文字の問題: 厳密な違反。
6 行目 12 文字目の問題: 厳密な違反。
行 8 文字 12 の問題: 厳密な違反。
jQuery(this) を使用しているためだと推測していますが、何に置き換えるかわかりません。これは、jQuery がグローバルとして宣言されていないためではないことに注意してください。
javascript - 「厳密に使用」(JavaScript)が宣言されていない変数を検出しないのはなぜですか?
私は「厳密な使用」を取得しようとしています。動作するように指示し、少し問題があります。次のファイルでは、FireFox 9はsomeVarが3行目で宣言されていないことを(正しく)検出しますが、theVarが19行目で宣言されていないことを検出できません。
javascript - JohnResigの単純なクラスのインスタンス化と「厳密な使用」
参照:http ://ejohn.org/blog/simple-class-instantiation/
同じ機能を実装するためのECMAScript5準拠の方法があるかどうか疑問に思いました。問題は、厳密モードではアクセスarguments.callee
が非推奨になることです。
javascript - 厳密モードなしの JSON.parse
javascript の Strict Mode に関するJohn Resigのブログを読んでいますが、質問があります。
厳密モードの機能の 1 つは、JSON.parse と JSON.stringify の使用ですが、「use strict」なしで使用できます。
彼がブログで使用しているのと同じ例を書くと、次のようになります。
これが機能していることがわかります。
なぜこれが許可されているのですか?何か不足していますか?
ありがとう!
javascript - strict を使用すると、無名関数の「this」が定義されないのはなぜですか?
javascriptを厳密モードで使用すると、匿名関数が未定義になるのはなぜですか? これが理にかなっている理由は理解できますが、具体的な答えは見つかりませんでした。
例:
フィドルでテストします: http://jsfiddle.net/Pyr5g/1/ ロガー (firebug) をチェックしてください。