JavaScriptでの巻き上げとは何ですか?

JavaScriptプログラミング言語での巻き上げの意味の簡単な説明

JavaScriptは、コードを実行する前にコードを解析し、見つかったすべての関数と変数の宣言を独自のメモリに追加して、それらをメモリに保持します。これは巻き上げ

関数宣言と関数式には、いくつかの異なる動作があります。

関数宣言を使用すると、定義する前に関数を呼び出すことができ、コードは機能します。それ以外の場合は、エラーが発生します。

一般的な経験則では、予期しない事態を避けるために、関数、変数、オブジェクト、およびクラスを使用する前に、それらを常に定義することです。

次の関数があるとします。

function bark() {
  alert('wof!')
}

巻き上げにより、技術的に呼び出すことができますbark()宣言される前:

bark()
function bark() {
  alert('wof!')
}

関数の場合、これは次の場合にのみ発生します関数宣言。上記の場合のように。

関数式ではありません

これは関数式です:

bark()
var bark = function() {
  alert('wof!')
}

この場合、var宣言は上げられ、で初期化されますundefined値として、次のようなものです。

var bark = undefined
bark()
bark = function() {
  alert('wof!')
}

このコードを実行すると、TypeError: bark is not a functionエラー。

constそしてlet宣言も持ち上げられますが、次のように未定義に初期化されませんvar

const bark = function() {
  alert('wof!')
}

または

let bark = function bark() {
  alert('wof!')
}

この場合、bark()それを宣言する前に、それはあなたにReferenceError: Cannot access 'bark' before initializationエラー。

オブジェクトまたはクラスを変数に割り当てる他の式についても同じことが起こります。

クラス宣言は次のように機能しますletそしてconst宣言:それらは持ち上げられますが、初期化されません。宣言の前にクラスを使用すると、ReferenceError: <Class> is not definedエラー。

私の無料ダウンロードJavaScriptビギナーズハンドブック


その他のjsチュートリアル: