最新のWeb開発のチュートリアル
×

JS チュートリアル

JS HOME JS 導入 JS どこへ JS 輸出 JS 構文 JS ステートメント JS 注釈 JS 変数 JS 演算子 JS 算術 JS 割り当て JS データの種類 JS 機能 JS オブジェクト JS 範囲 JS イベント JS ストリング JS 文字列メソッド JS 数字 JS 数のメソッド JS 数学 JS 日付 JS 日付形式 JS 日付の方法 JS 配列 JS アレイ方式 JS ブール値 JS 比較 JS 条件 JS スイッチ JS ループ For JS ループしながら JS ブレーク JS 型変換 JS 正規表現 JS エラー JS デバッギング JS 巻き上げ JS strictモード JS スタイルガイド JS ベストプラクティス JS 間違い JS パフォーマンス JS 予約語 JS JSON

JS フォーム

フォームバリデーション フォームAPI

JS オブジェクト

オブジェクト定義 オブジェクトのプロパティ オブジェクトメソッド オブジェクトプロトタイプ

JS 機能

関数定義 ファンクションのパラメータ 関数の呼び出し 関数クロージャ

JS HTML DOM

DOM イントロ DOM メソッド DOM 資料 DOM 要素 DOM HTML DOM CSS DOM アニメーション DOM イベント DOM EventListener DOM ナビゲーション DOM ノード DOM ノードリスト

JS ブラウザ BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS

JS 例 JS HTML DOM JS HTML 入力 JS HTML オブジェクト JS HTML イベント JS ブラウザ JS クイズ JS 概要

JS リファレンスマニュアル

JavaScript オブジェクト HTML DOM オブジェクト


 

JavaScript Hoisting


Hoistingトップに宣言を移動するのはJavaScriptのデフォルトの動作です。


JavaScriptの宣言が掲揚されています

JavaScriptでは、変数は、それが使用された後に宣言することができます。

言い換えると; それが宣言される前に変数を使用することができます。

例1、 例2と同じ結果が得られます。

例1

x = 5; // Assign 5 to x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;                     // Display x in the element

var x; // Declare x
»それを自分で試してみてください

例2

var x; // Declare x
x = 5; // Assign 5 to x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;                     // Display x in the element
»それを自分で試してみてください

これを理解するには、用語を理解しなければならない"hoisting"

Hoisting (現在のスクリプトまたは現在の関数の先頭に)現在のスコープの先頭にすべての宣言を移動するのはJavaScriptのデフォルトの動作です。


JavaScriptの初期化が掲揚されていません]です

JavaScriptは、宣言だけではなく、初期化をホイスト。

例1、 例2と同じ結果を与えるものではありません

例1

var x = 5; // Initialize x
var y = 7; // Initialize y

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y
»それを自分で試してみてください

例2

var x = 5; // Initialize x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y

var y = 7; // Initialize y
»それを自分で試してみてください

yは最後の例で定義されていないことをそれは意味がありますか?

のみ宣言(varの各y)は、いない初期化が(= 7)トップに掲揚されているためです。

そのためのhoisting 、それを使用する前に、yが宣言されていますが、初期化が掲揚されていないため、yの値は未定義です。

例2は、書き込みと同じです。

var x = 5; // Initialize x
var y;     // Declare y

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y

y = 7;    // Assign 7 to y
»それを自分で試してみてください

上部に変数を宣言します!

Hoisting (多くの開発者に)のJavaScriptの不明または見落とさ動作です。

開発者が理解していない場合はhoisting 、プログラムがバグ(エラー)を含有してもよいです。

バグを回避するために、常にすべてのスコープの開始時にすべての変数を宣言します。

これはJavaScriptのコードを解釈する方法であるので、それは常に良いルールです。

strictモードでのJavaScriptは、それらが宣言されていない場合は、変数を使用することはできません。
研究では、 "use strict"次の章で。