JavaScript 上級プログラミング: 変数とスコープ

JavaScript 上級プログラミング: 変数とスコープ

1. 元の値と参照値

6 つの単純なデータ型の値はすべてプリミティブ値です。プリミティブ値が変数を介して別の変数に割り当てられると、新しい値がコピーされ、2 つは互いに独立しています。

num1 = 5とする
num2 = num1とする


参照値が変数を介して別の変数に割り当てられると、値もコピーされます。この値は実際にはポインター (参照) であり、ポインターは引き続き同じオブジェクトを指します。

obj1 = 新しいオブジェクト()

obj2 = obj1とする

これらは同じ参照オブジェクトを指しているため、 obj1にプロパティを追加すると、 obj2も影響します。

obj1.name = "張さん"

console.log(obj2.name) // 張さん


関数にパラメータを渡す場合、パラメータが値で渡される状況は 1 つだけあり、これは変数を割り当てる場合と同じです。ただし、参照値の場合、渡される値はポインターですが、ポインターは依然として同じオブジェクトを指します。

2. インスタンス

typeofは一般にプリミティブ値の判定には適していますが、 nullやその他のオブジェクトがオブジェクトを返し、オブジェクトの特定の型が不明であるため、参照値には適していません。 参照値がどのタイプのオブジェクトであるかを判断する最良の方法は、 instanceof式を使用することです。

console.log(1 インスタンスのオブジェクト) //false
obj = new Object();
console.log(obj インスタンスオブオブジェクト) //true
console.log(null インスタンスオブオブジェクト) //false



関数fun(){
    //
}
console.log(fun instanceof Object) //true
console.log(fun instanceof Function) //true

console.log([] インスタンスオブオブジェクト) //true
console.log([] 配列のインスタンス) //true

3. 範囲

変数のスコープは、スコープまたは実行コンテキストと呼ばれます。変数はスコープ外では見えなくなります。すべてのシステムには、変数を検索するときにスコープ チェーンがあります。まず、その変数を参照する最も近いブロック スコープで変数を検索します。見つからない場合は、外側のローカル スコープで検索を続けます。それでも見つからない場合は、グローバル スコープで検索します。見つからない場合は、エラーReferenceError: xxx is not defined報告されます。

高度な JavaScript プログラミングにおける変数とスコープに関するこの記事はこれで終わりです。JavaScript 変数とスコープの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScriptの変数スコープについて学ぼう
  • JavaScript の変数スコープの詳細な説明
  • JavaScript での変数宣言をご存知ですか?
  • JavaScript における変数と関数の昇格の詳細な例
  • JavaScript でローカル変数をグローバル変数に変換する方法
  • JavaScript 変数と変換の詳細

<<:  Synology NAS は Docker コンテナを使用して KMS アクティベーション サーバーを構築し、Windows システムとオフィスをアクティベートします (操作手順)

>>:  テーブルタグ(TAGS)の詳細な紹介

推薦する

Linuxグループの基礎知識ポイントまとめ

1. Linuxグループの基本紹介Linux では、すべてのユーザーはグループに所属する必要があり、...

ウェブページの背景画像を伸ばす2つの方法

解決策は2つあります。 1つはCSSで、background-size:coverを使用して画像の伸...

MySQL の中国語ソートの詳細と例

MySQL の漢字ソートの詳細な説明デフォルトでは、MySQL は日付、時刻、および英語の文字列の並...

redhat7 に yum 経由で mysql5.7.17 をインストールするチュートリアル

RHEL/CentOS シリーズの Linux オペレーティング システムには MySQL ソース自...

JavaScriptでシンプルなスクロールウィンドウを実装する

この記事では、スクロールウィンドウを実装するためのJavaScriptの具体的なコードを参考までに紹...

ウェブサイトをより高く、よりデザイン的に見せる方法

「ウェブサイトを高級感のあるものにするにはどうすればいいでしょうか? それともデザイン重視にすればい...

シェルスクリプトを使用して CentOS7 に python3.8 環境をインストールする (推奨)

ワンクリック実行仮想マシンに Python 3.8 をインストールするには、ネットワーク アダプター...

フォーム検証機能を実装するためのネイティブ js

目次開発の際には、機能を段階的に分析して実装することで、明確な考え方を保つことができます。 1. フ...

RocketMQ の Docker インストールとインストール中に発生した問題の解決策

目次rocketmqイメージを取得する名前rvを作成する単一のブローカーノードを作成するrocket...

Linux ネットワークプログラミング機能の簡単な分析

目次1.ソケットを作成する2. ソケットをバインドする3. 聞き手を作る。聞く4. 接続が受け入れら...

JavaScript に関する 6 つの奇妙で便利な点

目次1. 解体のヒント2. デジタルセパレーター3. try...catch...finally が...

Linux で iostat コマンドを使用するチュートリアル

序文運用・保守を行う人がスキルを持っていなければ、サーバーを操作するのに恥ずかしさを感じてしまうと言...

HTML テーブル タグ チュートリアル (47): ネストされたテーブル

<br />このページでは、テーブルをネストすることで組版を実現しています。つまり、1 ...

Linux で cmake を使用して MySQL をコンパイルおよびインストールするための詳細なチュートリアル

1. cmakeをインストールする1. cmakeの圧縮パッケージを解凍する [root@mysql...

DockerでPython環境をパッケージ化するプロセスの詳細な説明

docker パッケージング Python 環境の手順は次のとおりです。 1 pip listの下に...