JS変数のスコープを宣言するにはどうすればよいですか?関数内のスコープ例の詳細な説明
変数のスコープは変数の可視性を指しますが、ライフサイクル (生存期間) は別の観点から変数を調べます。
JSの変数のスコープは、関数内で定義されたものをローカル変数、関数外で定義されたものをグローバル変数といいます。 (「関数の外にあるものはグローバル変数と呼ばれます」は相対的なものです。ここで議論する前提は、var を使用して明示的に宣言された変数であるということです。関数内で var を使用せずに定義された変数は、デフォルトでグローバル変数です。もちろん、var を使用せずに変数を宣言することは嫌われます。 )。
var glob = 4;//函数外声明全局变量 function fun() { var height = 20; //函数内用var声明的是局部变量 weight = 50; //函数内不用var声明的是全局变量 } fun(); alert(weight);
JS にはブロックレベルのスコープ、つまり中括弧 {} で囲まれたスコープはありません。 Javaにはあります。メインメソッド
public static void main(String... args) { for(int i=0;i<5;i++) { } { int j=10; } int z = 20; System.out.println(i); // i不可见,语法分析时报错,即编译不通过 System.out.println(j); // j不可见,语法分析时报错,即编译不通过 System.out.println(z); // z可见,输出20 }
に次のコードを記述します。ただし、これが JS
for(var i=0;i<5;i++) { } var obj = {name:"Lily"}; for(var attr in obj) { } { var j=10; } alert(i);//输出4,没有块级作用域 alert(attr); //输出name,没有块级作用域 alert(j);//输出10,没有块级作用域
内にある場合は、変数の宣言中にグローバル スコープでの for ループの使用を避けてください。そうしないと、グローバル名前付けスコープの汚染が発生します。
もちろん、JS1.7 は変数を宣言するための let キーワードを提案しましたが、これは for ステートメントのスコープにのみ適用されます。
for(let i=0;i<5;i++) { //todo } alert(i);//运行时报错,提示i未定义
js関数内の変数のスコープ例:
<html> <head> </head> <body> <script type="text/javascript"> var a = 5; var c = 3; function t(){ var a = 6; var b = 10; document.write(a+'-----'+b); document.write(c); } t(); </script> </body> </html>
PHPとは異なり、js関数内で変数を呼び出したい場合、まず関数内から変数を検索します。たとえば、この例では、a は 6 に等しいですが、関数本体では c が見つからないため、関数本体の外側で検索され、見つからない場合は呼び出されます。エラーが報告されます。
以上がJS変数のスコープを宣言するにはどうすればよいですか?関数内のスコープ例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

typedef struct は、構造体の使用を簡素化するために構造体型のエイリアスを作成するために C 言語で使用されます。構造体の別名を指定することで、新しいデータ型を既存の構造体に別名付けします。利点としては、可読性の向上、コードの再利用、型チェックなどが挙げられます。注: エイリアスを使用する前に構造体を定義する必要があります。エイリアスはプログラム内で一意であり、宣言されているスコープ内でのみ有効である必要があります。

Java における変数の期待値の例外は、変数の初期化、null 値の使用、およびローカル変数のスコープの認識によって解決できます。

C++ の #include プリプロセッサ ディレクティブは、外部ソース ファイルの内容を現在のソース ファイルに挿入し、その内容を現在のソース ファイル内の対応する場所にコピーします。主に、コード内で必要な宣言を含むヘッダー ファイルをインクルードするために使用されます。たとえば、標準入出力関数を組み込むための #include <iostream> などです。

JavaScript クロージャーの利点には、変数スコープの維持、モジュール化コードの有効化、遅延実行、およびイベント処理が含まれますが、欠点としては、メモリ リーク、複雑さの増加、パフォーマンスのオーバーヘッド、およびスコープ チェーンの影響が挙げられます。

C++ スマート ポインターのライフ サイクル: 作成: スマート ポインターは、メモリが割り当てられるときに作成されます。所有権の譲渡: 移動操作を通じて所有権を譲渡します。リリース: スマート ポインターがスコープ外に出るか、明示的に解放されると、メモリが解放されます。オブジェクトの破壊: ポイントされたオブジェクトが破壊されると、スマート ポインターは無効なポインターになります。

できる。 C++ では、ネストされた関数の定義と呼び出しが可能です。外部関数は組み込み関数を定義でき、内部関数はスコープ内で直接呼び出すことができます。ネストされた関数により、カプセル化、再利用性、スコープ制御が強化されます。ただし、内部関数は外部関数のローカル変数に直接アクセスすることはできず、戻り値の型は外部関数の宣言と一致している必要があります。内部関数は自己再帰的ではありません。

JavaScript では、this のポインティング タイプには、1. グローバル オブジェクト、2. 関数呼び出し、4. イベント ハンドラー、5. アロー関数 (this の外側の継承) が含まれます。さらに、bind()、call()、および apply() メソッドを使用して、これが何を指すかを明示的に設定できます。

Vue では、let と var の間で変数を宣言するときのスコープに違いがあります。 スコープ: var にはグローバル スコープがあり、let にはブロック レベルのスコープがあります。ブロックレベルのスコープ: var はブロックレベルのスコープを作成しません。let はブロックレベルのスコープを作成します。再宣言: var は同じスコープ内の変数の再宣言を許可しますが、let は許可しません。
