[解決済み] strictを使用すると、なぜ無名関数の "this "は未定義になるのですか?
2023-04-15 08:02:49
質問
なぜ この は無名関数では未定義なのでしょうか?私はこれが意味を持ち得る理由を理解していますが、私は具体的な答えを見つけることができませんでした。
例です。
(function () {
"use strict";
this.foo = "bar"; // *this* is undefined, why?
}());
フィドルでテストする。 http://jsfiddle.net/Pyr5g/1/ ロガー(firebug)で確認する。
どのように解決するのですか?
ECMAscript 262 第 5 版まで、ECMAscript 262 で使用されている
constructor pattern
を使っている人が
new
というキーワードがあります。を使い忘れた場合
new
を使うと、ES3 でコンストラクタ関数を呼び出すときに
this
はグローバルオブジェクトを参照していました (
window
を参照し、変数でグローバルオブジェクトを破壊することになります。
これはひどい動作なので、ECMA の人々は、単に
this
を
undefined
.
例です。
function myConstructor() {
this.a = 'foo';
this.b = 'bar';
}
myInstance = new myConstructor(); // all cool, all fine. a and b were created in a new local object
myBadInstance = myConstructor(); // oh my gosh, we just created a, and b on the window object
最後の行は、ES5のstrictではエラーを投げます。
"TypeError: this is undefined"
(これはより良い動作です)
関連
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] 配列の反復処理に "for...in "を使用するのは、なぜ良くないのでしょうか?
-
[解決済み] JSLintが突然レポートする。"use strict" の関数形式を使用する
-
[解決済み] カプセル化された匿名関数の構文について説明します。
-
[解決済み] なぜ、同じ行で無名関数を呼び出す必要があるのですか?
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
-
[解決済み] jqueryはjavascriptのライブラリなのかフレームワークなのか?[クローズド]
-
[解決済み] 文字列とラベルのローカライズとグローバリゼーションのベストプラクティス【終了しました
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptの(function() { } )()構文とは何ですか?
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] JSHintの'+'前の改行不良の説明
-
[解決済み] javascriptでオプションのパラメータを扱う
-
[解決済み] JavaScriptとLuaの微妙な違い [終了しました]
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?