ホームページ ウェブフロントエンド jsチュートリアル JavaScript の権威ガイド 学習ノート 変数スコープの共有_JavaScript スキル

JavaScript の権威ガイド 学習ノート 変数スコープの共有_JavaScript スキル

May 16, 2016 pm 06:01 PM
変数スコープ

言語における変数の「宣言」と「定義」をどのように理解しているのかわかりません。
私の理解は次のとおりです:
変数を「宣言」することは、変数を「定義」することを意味します。を宣言し、値を割り当てることを意味します。
例:

コードをコピー コードは次のとおりです。

var name; //単なるステートメント
var num = 11;//宣言と代入、つまり定義されています
varpassword = "yangjiang";//宣言と代入、つまり定義されています

以下はいくつかのポイントの概要です:
変数のスコープ: グローバルとローカル。 (注: 宣言されていない変数の値を読み取ろうとすると、JavaScript はエラーを生成します)
最初のポイント: var キーワードを使用して変数を変更する場合、ローカル変数または関数パラメーターが宣言されている場合、名前
がグローバル変数の名前と同じである場合、グローバル変数は事実上非表示になります。
例:
コードをコピー コードは次のとおりです:

varscope1 = "global"; //var 変更
関数 checksScope(){
varscope1 = "ローカル";//var 変更
document.write(scope1);// local

2 番目のポイント: var キーワードなしで宣言された変数を指定しようとすると、変数が
内でのみ使用されている場合でも、暗黙的に宣言された変数は常にグローバル変数として作成されます。関数本体 (関数が実行された場合にのみ有効になります。) 関数のネストはサポートされていないことに注意してください。
例:

コードをコピーします コードは次のとおりです:
scope2 = " globalAAAAAA";/ / var の変更は使用されません (js がデフォルトでグローバル変数として宣言します)
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

の *A のコードをコメントアウトすると、上記の例、
例:

コードをコピー コードは次のとおりです:
scope2 = "globalAAAAA";//var の変更は使用されません (js はデフォルトでグローバル変数として宣言します)
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 が実行されていないため、*B の出力は globalAAAAA;
関数 checkScopeA が実行されないため、変数 myscope は宣言されていないため、宣言されていない変数を読み取ろうとするとエラーが発生します。
3 番目のポイント:
JavaScript では、関数定義を入れ子にすることができます。各関数には独自のローカル スコープがあるため、ローカル スコープを複数のネストされたレベルにすることができます。
例:

コードをコピー コードは次のとおりです:
varscope3 = "globalscope" ; //グローバル変数が定義されています
function checkScopeB(){
varscope3 = "localscope" //ローカル変数が定義されており、グローバル変数scope3をオーバーライドします
functionnested( ){
varscope3 = "ネストされたスコープ"; //ローカル変数は関数
document.write("
"scope3) の関数内で定義されます。 //ネストされたスコープ
}
nested();
}
checkScopeB();//ネストされたスコープ

4 番目のポイント:
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("
}
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP関数の変数スコープはどのように決定されるのでしょうか? PHP関数の変数スコープはどのように決定されるのでしょうか? Apr 16, 2024 pm 04:51 PM

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

Golang 関数のライフサイクルと変数スコープの深い理解 Golang 関数のライフサイクルと変数スコープの深い理解 Apr 19, 2024 am 11:42 AM

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

Go 言語の変数スコープとライフサイクル Go 言語の変数スコープとライフサイクル Jun 01, 2023 pm 12:31 PM

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

Golang関数で変数のスコープを定義するにはどうすればよいですか? Golang関数で変数のスコープを定義するにはどうすればよいですか? Apr 11, 2024 pm 12:27 PM

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

PHP 5.6 変数スコープ: static キーワードを使用して静的変数を定義する方法 PHP 5.6 変数スコープ: static キーワードを使用して静的変数を定義する方法 Jul 30, 2023 pm 11:02 PM

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

PHPでの変数の使い方 PHPでの変数の使い方 May 20, 2023 pm 02:33 PM

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

PHP でスーパーグローバル変数を使用する方法 PHP でスーパーグローバル変数を使用する方法 May 20, 2023 pm 07:01 PM

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

Golang関数の変数スコープは何ですか Golang関数の変数スコープは何ですか Dec 22, 2023 pm 02:39 PM

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

See all articles