ホームページ > ウェブフロントエンド > フロントエンドQ&A > JavaScriptにはブロックレベルのスコープがありますか?

JavaScriptにはブロックレベルのスコープがありますか?

WBOY
リリース: 2022-03-10 11:41:49
オリジナル
2022 人が閲覧しました

JavaScript には、ブロックレベルのスコープという概念がありません。ブロックレベルのステートメントで定義された変数は、実際にはステートメント内ではなく、それを含む関数内に作成されます。変数宣言を、変数が使用される場所の近くに置く代わりに、関数本体の先頭に置くことができます。

JavaScriptにはブロックレベルのスコープがありますか?

このチュートリアルの動作環境: Windows 10 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

JavaScript にはブロックレベルのスコープがありますか?

JavaScript にはブロックレベルのスコープの概念がありません。これは、ブロックレベルのステートメントで定義された変数が、実際にはステートメント内ではなく、それを含む関数内で作成されることを意味します。

コード セグメント 1:

var scope="global";  
function f(){   
    console.log(scope);  
    var  scope="local"  
    console.log(scope);  
}  
f();
ログイン後にコピー

何が出力されますか?

答え: 未定義のローカル

コード セグメント 2:

var scope="global";  
function f(){  
    var scope;  
    console.log(scope);  
    scope="local"  
    console.log(scope);  
}  
f();
ログイン後にコピー

何が出力されますか?

答え: 未定義のローカル

コード セグメント 3:

var scope="global";  
function f(){  
    console.log(scope);  
}  
f();
ログイン後にコピー

何が出力されますか?

回答: global

上記 3 つの例を通して、「JavaScript にはブロックレベルのスコープはありませんが、関数のスコープはあります」という文を説明します。

JavaScript では関数スコープの特性上、コードセグメント 1 とコードセグメント 2 は同等であり、ローカル変数は関数本体全体で定義されます。コードセグメント 1 の関数本体の変数スコープは、同じ名前のグローバル変数をカバーしており、プログラムが var ステートメントを実行する場合にのみ、ローカル変数スコープが真に

割り当てられます。したがって、上記のプロセスは、変数の初期化を元の位置、つまりコード セグメント 2 に残したまま、関数内の変数宣言を関数本体の先頭に「進める」ことと同等です。

ブロックレベルのスコープを持つプログラミング言語では、一般に、変数宣言と変数を使用するコードを小さなスコープ内でできるだけ近くに保つことが良いプログラミングです。

習慣。 JavaScript にはブロック レベルのスコープがないため、プログラマによっては、変数が使用される場所の近くに宣言を配置するのではなく、意図的に関数本体の先頭に変数宣言を配置することがあります。このアプローチ

により、ソース コードにはさまざまな知識の範囲が非常に明確に反映されます。

関連する推奨事項:

JavaScript 学習チュートリアル

以上がJavaScriptにはブロックレベルのスコープがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート