JavaScript における変数のプロモーションとは、変数と関数の宣言がコードの先頭に移動することを意味しますが、実際には、変数と関数の宣言の場所は移動せず、コンパイル プロセス中にメモリ内に配置されるだけです。 。
JavaScript はインタープリタ言語ですが、Web 開発における実行前の重要なステップは、インタープリタがコードを参照して、宣言されたすべての変数を識別し、いつ再割り当てされるかを記録し、コード ブロックを 3 つのレベルのスコープに分割することです。 : ブロック、関数、グローバル。次にJavaScriptでの変数プロモーションについて詳しく紹介していきますので、お役に立てれば幸いです。 #JavaScriptTutorial
]
#上記の例の関数のスコープには変数 x が含まれているため、変数は関数内でのみ認識されます。グローバル スコープでアクセスすると、x は宣言された変数ではないため、エラーが報告されます。 x の宣言を関数の外に移動すると、その宣言はグローバル スコープになり、関数の外でも内でも使用できます。
例
var x = "declared outside function"; exampleFunction(); function exampleFunction() { console.log("Inside function"); console.log(x);} console.log("Outside function"); console.log(x);

ES6 の登場により、2 つ変数をプロモートする新しいメソッド、let メソッドと const メソッドが導入されました。これらのメソッドにより、変数で使用可能な範囲をより詳細に制御できます。 let と const で定義されたローカル変数は、それらが定義されているレベルでのみ使用できます。
変数のプロモーション
次の例では、x は var を宣言します。 、および x は、関数全体とサブブロックで同じ変数を呼び出します。 x が let または const で宣言されている場合、サブモジュールで let x を再度宣言すると、外部スコープはそれにアクセスできなくなります; 実際には、それは別の変数です
function varTest() { var x = 1; if (true) { var x = 2; console.log(x); // 2 } console.log(x); // 2 } function letTest() { let x = 1; if (true) { let x = 2; console.log(x); // 2 } console.log(x); // 1}
例:
function doSomething() { console.log(bar); // undefined console.log(foo); // ReferenceError var bar = 1; let foo = 2;}この関数では、宣言バーがスコープの先頭に昇格されます。実際には、次のように実行されます。
function doSomething() { var bar; console.log(bar); // undefined console.log(foo); // ReferenceError bar = 1; let foo = 2;}
これが、console.log(bar) の結果が未定義であり、console.log(foo) がエラーを報告する理由です。
これにより、おそらく:
num = 6; console.log(num); // returns 6 var num;
および:
dogName("Watson"); function dogName(name) { console.log("My dog's name is " + name); }
最初の例では、var num は割り当ての後に宣言されていますが、コンピュータの観点からは、次のことに注意してください。グローバルに宣言したので、宣言を先頭に移動して、コードの残りの実行を続けます。 2 番目の例では、関数を定義する前に関数を呼び出したり呼び出したりした場合でも、定義はスコープの先頭に引き上げられるため、実際にコードの実行を開始する頃には、インタープリターはそれが DogName() であることをすでに認識しています。
注: var 変数の場合、宣言のみが昇格され、割り当ては昇格されません。
まとめ: 以上がこの記事の全内容ですので、皆様の変数改善学習の一助になれば幸いです。
以上がJavaScript での変数ホイスティングを理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Dreamweaver Mac版
ビジュアル Web 開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ホットトピック



