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)の詳細な紹介

推薦する

MySQL パスワードは正しいが、ローカルにログインできない -1045

MySQLパスワードは正しいが、ローカルでログインできない -1045 ユーザー 'roo...

HTML の基本 - CSS スタイルシート、スタイル属性、フォーマット、レイアウトの詳細

1.位置:固定一部の Web サイトの右下隅にあるポップアップ ウィンドウなどの、ブラウザーを基準と...

VMware に Centos7 をインストールした後に外部ネットワークに ping できない問題を解決する

クラスターを構成する際に問題が発生しました。当初は 3 台の仮想マシンすべてが外部ネットワークに p...

フレックスレイアウトを使用してページレイアウトを簡単に実装するためのサンプルコード

では、早速コードを見てみましょう。 1. 上部、中央、下部のレイアウト: <!DOCTYPE ...

Reactは、読み込み、読み込み完了、読み込み失敗の3つの段階の原則分析を実装します。

最近ブログに書いたのですが、プロジェクトリストの中に写真がたくさんあり、最初は読み込みが遅いので、ス...

HTML 選択タグにおける単一選択と複数選択の詳細な説明

select 要素は、単一選択または複数選択のメニューを作成します。フォームが送信されると、ブラウザ...

docker view container log コマンドの実装

なぜログを読む必要があるのでしょうか?たとえば、コンテナの起動に失敗したがプロンプトが表示されない場...

vue3+threejs を使用して iView 公式サイトのビッグウェーブ特殊効果の例を模倣する

目次序文1. レンダリング2. コード3. 背景画像素材要約する序文Threejs は、Web ベー...

MySQLの行ロックとテーブルロックの意味と違いの詳細な説明

1. はじめに行ロックとテーブルロックの違いは面接で頻繁に出てくるはずです。MySQL のロックにつ...

Linux システムの busybox に mkfs.vfat コマンドを移植する

オーディオおよびビデオ ファイルを保存するためのディスク寿命を延ばすには、ディスクをフォーマットする...

要素の円弧モーションを実現する CSS3 サンプルコード

CSS を使用して要素の円弧の動きを制御する方法CSS3 の新しい属性 transfrom トランジ...

クラウドネイティブテクノロジー Kubernetes (K8S) の紹介

目次01 Kubernetes とは何ですか? 02 KubernetesとCompost+Swar...

ubuntu16.04でNFSサービスを構築する方法

NFS の紹介NFS (ネットワーク ファイル システム) は、FreeBSD でサポートされている...

最新の高品質な英語無料フォント36個を公開

01. 無限フォントのダウンロード02. バンダフォントのダウンロード03. ロールアップフォントの...