JavaScript の権威ガイド 学習ノート 変数スコープの共有_JavaScript スキル
言語における変数の「宣言」と「定義」をどのように理解しているのかわかりません。
私の理解は次のとおりです:
変数を「宣言」することは、変数を「定義」することを意味します。を宣言し、値を割り当てることを意味します。
例:
var name; //単なるステートメント
var num = 11;//宣言と代入、つまり定義されています
varpassword = "yangjiang";//宣言と代入、つまり定義されています
以下はいくつかのポイントの概要です:
変数のスコープ: グローバルとローカル。 (注: 宣言されていない変数の値を読み取ろうとすると、JavaScript はエラーを生成します)
最初のポイント: var キーワードを使用して変数を変更する場合、ローカル変数または関数パラメーターが宣言されている場合、名前
がグローバル変数の名前と同じである場合、グローバル変数は事実上非表示になります。
例:
varscope1 = "global"; //var 変更
関数 checksScope(){
varscope1 = "ローカル";//var 変更
document.write(scope1);// local
内でのみ使用されている場合でも、暗黙的に宣言された変数は常にグローバル変数として作成されます。関数本体 (関数が実行された場合にのみ有効になります。) 関数のネストはサポートされていないことに注意してください。
例:
function checkScopeA(){
scope2 = "localAAAAA"; // var の変更は使用されません (js が宣言します)デフォルトではグローバル変数として使用されます)
document.write("
"scope2);
myscope = "myLocalAAAAA";//変数の変更は使用されません (js はグローバル変数として宣言します)デフォルトでは変数)
document.write ("," myscope);
}
checkScopeA();//localAAAAA, myLocalAAAA *A
document.write("
" scope2);//localAAAAA *B
document.write("
" myscope);//myLocalAAAAA *C
例:
function checkScopeA(){
scope2 = "localAAAAA";//var の変更は使用されません(js はデフォルトでグローバル変数として宣言します)
document.write("
"scope2);
myscope = "myLocalAAAAA";//var の変更は使用されません (js は宣言します)デフォルトではグローバル変数として使用されます)
document.write("," myscope );
}
//checkScopeA(); *A
document.write("
"scope2);//globalAAAAA *B
document.write("< br/>" myscope);//エラーが発生しました *C
関数 checkScopeA が実行されないため、変数 myscope は宣言されていないため、宣言されていない変数を読み取ろうとするとエラーが発生します。
3 番目のポイント:
JavaScript では、関数定義を入れ子にすることができます。各関数には独自のローカル スコープがあるため、ローカル スコープを複数のネストされたレベルにすることができます。
例:
function checkScopeB(){
varscope3 = "localscope" //ローカル変数が定義されており、グローバル変数scope3をオーバーライドします
functionnested( ){
varscope3 = "ネストされたスコープ"; //ローカル変数は関数
document.write("
"scope3) の関数内で定義されます。 //ネストされたスコープ
}
nested();
}
checkScopeB();//ネストされたスコープ
JavaScript にはブロックレベルのスコープはありません、関数内で宣言されます。すべての変数は、宣言された場所に関係なく、関数全体で宣言されます。
JavaScript にはブロックレベルのスコープはありません。関数内で定義されたすべての変数は、どこで定義されているかに関係なく、関数全体で定義されます。
例:
function test(o){//上記の説明によると、この関数の 3 つの変数 i、j、k のスコープは同じです。
var i = 0; //変数 i は関数全体で定義されます
if(typeof o == "object"){
var j = 0; //変数 j は関数全体で定義されますif ステートメント ブロック内だけではありません
for(var k=0;k<10;k){//変数 k は、if ステートメント ブロック内だけでなく関数全体で定義されています
document.write( "
k の値は次のとおりです: " k);
}
document.write("
for ループ外の k の値: " k);この時点では K はまだ定義されており、k=10
}
document.write("
value of j:" j); //変数 j は宣言されていますが、宣言されている可能性があります。関数に渡されるパラメータはオブジェクトではない可能性があり、if ステートメント ブロックは実行されないため、初期化されていません。
}
この関数は 2 つの方法で呼び出されます:
メソッド 1 : 入力オブジェクトを渡す
test({});//出力結果: 上記例のコメント
方法 2: 何も渡さない
test();// 出力結果: j の値: 未定義
理解できないのは、2番目のメソッドの出力結果が未定義である理由です。当時私が推測したのは次のとおりです: j の値: 0
その後、この本では次のように述べられました:
ローカル変数は関数本体全体で宣言 (または定義) されるため、これは関数本体全体で同じ名前のグローバル
変数は に隠されています。ローカル変数は関数本体全体で宣言 (または定義) されますが、var ステートメントが実行される前には初期化されません。
この場合、変数 j が関数全体で定義されており、関数に渡されるパラメーターが空であるため、上の 2 番目のメソッドの呼び出しの出力結果が説明しやすくなります。関数本体は実行されないため、 j の値は未定義になります (これは上記の本の文章に基づく私の理解です)
次の例は、より適切な説明です:
var sssss = "グローバル変数"
function f(){
; document.write ("
" sssss);//出力: 「グローバル変数」を出力する代わりに未定義
var sssss = "ローカル変数"
document.write("
}

ホット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)

ホットトピック

PHP の変数スコープは、ローカル (関数内)、グローバル (プログラム内でアクセス可能)、クラス スコープ (クラス インスタンス内でアクセス可能) に分かれています。 global キーワードはローカル変数をグローバル変数として宣言でき、static キーワードはローカル変数を静的変数として宣言し、関数呼び出し間で値を保持できます。

Go では、関数のライフ サイクルには定義、ロード、リンク、初期化、呼び出し、戻り値が含まれます。変数のスコープは関数レベルとブロック レベルに分割されますが、ブロック内の変数はブロック内でのみ表示されます。 。

Go 言語はオープンソースの静的型付け言語であり、シンプルさ、効率性、信頼性などの特徴を持ち、開発者の間でますます愛されています。 Go 言語では、変数はプログラム内のデータ ストレージの最も基本的な形式であり、変数のスコープとライフ サイクルはプログラムの正確さと効率にとって非常に重要です。変数のスコープとは、変数の可視性とアクセス可能性、つまり変数にアクセスできる場所を指します。 Go 言語では、変数のスコープはグローバル変数とローカル変数に分けられます。グローバル変数は関数の外部で定義された変数であり、プログラム全体のどこでも使用できます。

Go では、関数スコープにより、変数の可視性が変数が宣言されている関数に制限されます。 関数内で変数を宣言します: varnametype=value スコープは宣言されたコード ブロックに制限され、他の関数またはネストされたブロックはこれらの変数にアクセスできません。

PHP5.6 変数スコープ: static キーワードを使用して静的変数を定義する方法 PHP では、変数のスコープによって変数の可視性とアクセス スコープが決まります。静的変数は、関数呼び出し間で値を変更しない特殊なタイプの変数です。 PHP5.6 以降では、static キーワードを使用して関数およびクラス メソッド内で静的変数を定義できます。静的変数の特性は次のとおりです。 静的変数のスコープは、それが宣言されている関数またはメソッドに制限されます。静的変数は関数またはメソッド呼び出しの間で使用されます。

PHP は、開発者がサーバー側で動的な Web アプリケーションを作成できるようにする非常に人気のある Web 開発言語です。 PHP では、変数は値とデータを保存するために使用される基本的なデータ構造です。この記事ではPHPでの変数の使い方を紹介します。変数の基本構文 PHP で変数を宣言する構文は非常に簡単です。変数名はドル記号 ($) で始まり、その後に変数名が続きます。変数名には文字、数字、またはアンダースコアを組み合わせることができますが、文字またはアンダースコアで始まる必要があります。たとえば、次のコードは名前を宣言します。

PHP のスーパーグローバル変数は、グローバル スコープでアクセスできる変数を指します。各スーパーグローバル変数は連想配列であり、$_GET、$_POST、$_COOKIE など、PHP で事前定義された変数が多数含まれています。これらのスーパーグローバル変数は、フォーム データの取得、URL パラメータの取得など、ユーザーのリクエストから情報を取得する重要な方法を提供するため、Web 開発において非常に重要です。この記事では、PHPでよく使われるスーパーグローバル変数について、その機能や使い方も含めて詳しく紹介します。

Golang 関数の変数スコープは、関数内の変数の可視性とライフサイクルを指します。関数内の変数の位置と範囲に応じて、変数はローカル変数、パラメータ変数、戻り値変数の 3 種類に分類できます。詳細な紹介: 1. ローカル変数は関数内で定義された変数であり、関数内でのみ使用できます。その範囲は、関数のすべてのコード ブロックとネストされたコード ブロックを含む、関数内に限定されます。2. パラメーター変数は、関数が受け取る入力パラメータで、関数内で使用できますが、範囲は関数内などに限定されます。
