序文JavaScript を学習した人なら誰でも、さまざまな環境で this がどこを指すかという問題を認識しているはずです。次のコードを見てください varタイプ = 1 関数toWhere(){ タイプ = 2; } どこにあるのか(); console.log(タイプ) あなたはきっとこう思うでしょう: ここでグローバル変数の型が宣言されます。type=1 が実行されると、値に 1 が割り当てられます。その後、toWhere 関数が呼び出されます。関数内で this を見ると、this がどこを指しているかがわかります。ここでは、this が window を指していることは明らかです。this.type=2 が実行されると、グローバル変数 type に値 2 が割り当てられます。 最後に、グローバル変数の型が出力され、結果は明らかに 2 になります。 ブラウザを開いて確認すると、そこには明らかに 2 が表示されます。 これで終わりですか? Node を学習し、上記のコードを nodejs で再実行すると、違いがわかります。 1 が間違っていることに気が付きました。2 と同じではないでしょうか? 関連するデバッグ上記の例から、同じ js コードをブラウザと nodejs で実行すると結果が異なることがわかります。 これは実はこの指摘の問題によるものですが、この指摘は私たちが通常知っているものとは異なります。このポインティング問題はノードの動作原理によって引き起こされます varタイプ = 1 関数toWhere() { このタイプ = 2 console.log("関数内の this が指している", this) } どこへ() console.log(タイプ) console.log("グローバルにこれ", this) 1.ブラウザでこれを印刷する 関数内のthisはwindowを指し、グローバルなthisもwindowを指しています。 2. これをNode.jsで印刷する 見つかりました。関数内のこれは、Object [global] を指します。 関数の this に値を割り当てると、その値は実際にはグローバル オブジェクトにアタッチされます。だから、世界的にこの価値は変わらないだろう ノード原理分析では、なぜこのようなことが起こるのか見てみましょう。 まず、Node.jsがどのように動作するかを理解する必要があります
前回の説明で、外部に出力された this は空のオブジェクト {} を指していることがわかりました。実際、ノードで実行されるファイルは {} でラップされているため、スクリプトファイルは次のように独自のクロージャで実行されます。 { (関数(){ //スクリプトファイル })() } 前の例では、関数の外側では this は空のオブジェクト {} を参照し、関数の内側では this には指定された実行コンテキストがないため、グローバル オブジェクト - (匿名関数の実行コンテキストのグローバル スコープにアクセスできる) を参照します。 要約するNodeJS とブラウザの this キーワードの違いについての記事はこれで終わりです。NodeJS とブラウザの this キーワードについての詳細は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL データベースは SQL ステートメントを知っている必要があります (拡張バージョン)
>>: Tencent Cloud で HTTPS を無料で導入する方法
この記事の環境はWindows 10、MySQLのバージョンは5.7.12-logです1. 基本的な...
まずは効果を確認実装コード <div class="box box1"&g...
1. vue-cliをインストールする vue.js で vue.js を実行します。 2. プロジ...
質問前回のクロスドメイン リソース共有に関する記事では、ドメイン間で Cookie を送信する場合、...
まずは、以前書いた CSS カルーセルアニメーション効果を見てみましょう。アニメーションの遷移をスム...
目次ノードイベントループイベントループ図メインスレッドイベントループタイマーキューの仕組み投票キュー...
この記事では、Ubuntu 環境で PHP と Nginx をコンパイルしてインストールする方法につ...
目次JavaScript のインポート1. 内部ラベル2. 外部紹介基本的な構文データ型番号弦ブール...
導入HTML は、Web ドキュメントのコンテンツのコンテキスト構造と意味を提供します。HTML 自...
Web デザインを学習する過程で、html と htm の関係など、遭遇した多くの問題について深く...
背景Shell の mysql-client を介して MySQL データベースにログインする場合、...
1. Dockerfileを書く(1)プロジェクト名を右クリックして新しいテキストファイルを作成し、...
概要es6 では、配列またはオブジェクトから指定された要素を取得する新しい方法が追加されました。これ...
レスポンシブレイアウト開発の基礎知識この章は主に以下の部分に分かれています• レスポンシブデザインを...
Linux のデフォルトの ssh リモート ポートは 22 です。デフォルトのポートは、悪意のある...