ホームページ ウェブフロントエンド jsチュートリアル JavaScriptのデータ型:基本的な型と参照型の値_基礎知識

JavaScriptのデータ型:基本的な型と参照型の値_基礎知識

May 16, 2016 pm 04:06 PM
javascript 価値 基本タイプ 参照型 データの種類

ECMAScript 変数には、基本型の値と参照型の値という 2 つの異なるデータ型の値が含まれます。プリミティブ型の値は単純なデータの一部ですが、参照型の値は複数の値で構成されるオブジェクトです。

変数に値を割り当てるとき、パーサーはその値がプリミティブ型であるか参照型であるかを判断する必要があります。基本的な型には、Unknown、Null、Boolean、Number、String が含まれます。これらの 5 つの基本的なデータ型は値によってアクセスされるため、変数に格納されている実際の値はメモリ オブジェクトに格納されます。他の言語とは異なり、JavaScript ではメモリ内の場所に直接アクセスすることができません。つまり、オブジェクトのメモリ空間を直接操作することはできません。オブジェクトを操作する場合、実際には実際のオブジェクトではなくオブジェクトへの参照を操作することになるため、参照型の値は参照によってアクセスされます。

1. 動的属性
基本型を定義する方法と参照型を定義する方法は非常に似ています。参照型の値の場合、次のように、プロパティとメソッドを追加したり、プロパティやメソッドを変更したり削除したりすることもできます。

コードをコピー コードは次のとおりです:
var person = new Object();
person.name = "zxj";
アラート(人物.名前) //"zxj"

2. 変数値をコピーします

基本型の値をある変数から別の変数にコピーすると、変数オブジェクトに新しい値が作成され、新しい変数に割り当てられた場所にコピーされます。


コードをコピー コードは次のとおりです:
var num1 = 5;
var num2 = num1 //5
;

参照型の値がある変数から別の変数にコピーされると、変数オブジェクトに格納されている値のコピーも、新しい変数に割り当てられたメモリ空間にコピーされます。違いは、この値が実際にはヒープに格納されているオブジェクトへのポインターであることです。コピーが完了すると、両方の変数が実際には同じオブジェクトを参照します。したがって、以下に示すように、変数の 1 つを変更すると、もう 1 つの変数に影響します:

コードをコピーします コードは次のとおりです:
var obj1 = 新しいオブジェクト();
var obj2 = obj1;
obj1.name = "zxj";
アラート(obj2.name); //"zxj"

3. パラメータを渡す

ESMAScript のすべての関数のパラメーターは値によって渡されます。つまり、関数の外の値を関数内のパラメーターにコピーすることは、ある変数から別の変数に値をコピーすることと同じです。プリミティブ型の変数がコピーされるのと同じように、プリミティブ型の値が渡されます。参照型の値の転送は、参照型変数のコピーと同じです。変数にアクセスするには値による方法と参照による方法の 2 つがあるのに対し、パラメータは値によってのみ渡すことができるため、多くの開発者はこの時点で混乱するかもしれません。

基本型の値をパラメーターに渡すと、渡された値はローカル変数 (名前付きパラメーター) にコピーされます。次のコードに示すように:


コードをコピー コードは次のとおりです:
function addTen(num) {
数値 = 10;
数値を返します;
}
変数数 = 20;
var result = addTen(count);
alert(count); // 20、変化なし
アラート(結果); // 30

パラメータは実際には関数のローカル変数です。パラメータ num と変数 count は相互に認識されず、同じ値を持つだけです。 num が参照によって渡された場合、変数 count の値も 30 になり、関数内の変更が反映されます。
参照型の値をパラメータに渡すと、メモリ内の値のアドレスがローカル変数にコピーされるため、このローカル変数の変更は関数の外部に反映されます。ここでは参照型を使用して見てみましょう:


コードをコピー コードは次のとおりです:
function setName(obj) {
Obj.name = "zxj";
}
var person = new Object();
setName(人);
アラート(人物.名前) //"zxj"

この関数内では、obj と person は同じオブジェクトを参照します。つまり、オブジェクトが値によって渡された場合でも、obj は同じオブジェクトに参照によってアクセスします。したがって、関数内で obj に name 属性を追加すると、関数外の人物も反映されます。これは、人物が指すオブジェクトはヒープ メモリ上に 1 つしかなく、グローバル オブジェクトであるためです。多くの開発者は、ローカル スコープで変更されたオブジェクトがグローバル スコープに反映される、つまりパラメータが参照によって渡されると誤解しています。オブジェクトが値によって渡されることを証明するために、次の変更された例を見てみましょう:

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

function setName(obj) {
Obj.name = "zxj";
Obj = new Object();
Obj.name = "sdf";
}
var person = new Object();
setName(人);
アラート(人名);

上記の例からわかるように、person が参照によって渡される場合、person は name 属性値が「sdf」である新しいオブジェクトを指すように自動的に変更されます。ただし、次に person.name にアクセスすると、「zxj」が表示されたままになります。これは、関数内でパラメーターの値が変更されても、元の参照は変更されないことを示しています。実際、obj が関数内でオーバーライドされると、この変数はローカル オブジェクトを参照します。このローカル オブジェクトは、関数の実行が完了するとすぐに破棄されます。

ECMAScript 関数のパラメータはローカル変数と考えてください。

4. 検出タイプ

typeof は基本的なデータ型を検出する場合には強力なアシスタントですが、この演算子は参照型を検出する場合にはあまり役に立ちません。通常、値がオブジェクトであるかどうかを知りたいのではなく、それがどのようなタイプのオブジェクトであるかを知りたいのです。 ECMAScript は、この目的のために、instanceof 演算子を提供します。その構文は次のとおりです:

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

result = コンストラクターの変数インスタンス

変数が指定された参照型のインスタンスである場合、instanceof 演算子は true を返します:
コードをコピー コードは次のとおりです:

アラート(オブジェクトの人物インスタンス);
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

MySQL データベースの性別フィールドにはどのデータ型を使用する必要がありますか? MySQL データベースの性別フィールドにはどのデータ型を使用する必要がありますか? Mar 14, 2024 pm 01:21 PM

MySQL データベースでは、通常、性別フィールドは ENUM タイプを使用して保存できます。 ENUM は、定義済みの値のセットから 1 つをフィ​​ールドの値として選択できる列挙型です。 ENUM は、性別などの固定的で限定されたオプションを表す場合に適しています。具体的なコード例を見てみましょう。性別を含むユーザー情報を含む「users」というテーブルがあるとします。ここで性別のフィールドを作成したいと思います。テーブル構造は次のように設計できます: CRE

Golang では、ジェネリック関数はポインターと参照型をどのように処理しますか? Golang では、ジェネリック関数はポインターと参照型をどのように処理しますか? Apr 16, 2024 pm 04:06 PM

ジェネリック関数が Go でポインター型を処理する場合、元の変数への参照を受け取り、変数値を変更できるようになります。参照型は渡されるときにコピーされるため、関数は元の変数値を変更できなくなります。実際の例には、汎用関数を使用して文字列または数値のスライスを比較することが含まれます。

MySQL の性別フィールドに最適なデータ型は何ですか? MySQL の性別フィールドに最適なデータ型は何ですか? Mar 15, 2024 am 10:24 AM

MySQL では、性別フィールドに最も適したデータ型は ENUM 列挙型です。 ENUM 列挙型は、可能な値のセットを定義できるデータ型です。通常、性別には男性と女性の 2 つの値しかないため、性別フィールドは ENUM 型の使用に適しています。次に、具体的なコード例を使用して、MySQL で性別フィールドを作成し、ENUM 列挙型を使用して性別情報を保存する方法を示します。手順は次のとおりです。 まず、MySQL に users という名前のテーブルを作成します。

Python 構文のマインド マップ: コード構造の深い理解 Python 構文のマインド マップ: コード構造の深い理解 Feb 21, 2024 am 09:00 AM

Pythonはそのシンプルで読みやすい構文から幅広い分野で広く使われています。プログラミングの効率を向上させ、コードがどのように機能するかを深く理解するためには、Python 構文の基本構造をマスターすることが重要です。この目的を達成するために、この記事では、Python 構文のさまざまな側面を詳しく説明した包括的なマインド マップを提供します。変数とデータ型 変数は、Python でデータを保存するために使用されるコンテナです。マインド マップには、整数、浮動小数点数、文字列、ブール値、リストなどの一般的な Python データ型が表示されます。各データ型には独自の特性と操作方法があります。演算子 演算子は、データ型に対してさまざまな操作を実行するために使用されます。マインド マップは、算術演算子、比率など、Python のさまざまな演算子の種類をカバーしています。

MD5ハッシュ値とは何ですか? MD5ハッシュ値とは何ですか? Feb 18, 2024 pm 08:50 PM

MD5値とは何ですか?コンピューター サイエンスでは、MD5 (MessageDigestAlgorithm5) は、メッセージのダイジェストまたは暗号化に使用される一般的に使用されるハッシュ関数です。通常は 32 ビットの 16 進数で表される、固定長の 128 ビットの 2 進数を生成します。 MD5 アルゴリズムは、1991 年に Ronald Rivest によって設計されました。 MD5 アルゴリズムは、暗号化の分野ではもはや安全ではないと考えられていますが、データ整合性検証やファイル検証では依然として広く使用されています。

MySQL の性別フィールドに最適なデータ型の選択は何ですか? MySQL の性別フィールドに最適なデータ型の選択は何ですか? Mar 14, 2024 pm 01:24 PM

データベース テーブルを設計する場合、適切なデータ型を選択することは、パフォーマンスの最適化とデータ ストレージの効率にとって非常に重要です。 MySQL データベースでは、性別フィールドには通常、男性または女性の 2 つの値しかないため、性別フィールドを保存するデータ型にいわゆる最良の選択はありません。ただし、効率とスペースを節約するために、性別フィールドを保存するのに適切なデータ型を選択できます。 MySQL では、性別フィールドを格納するために最も一般的に使用されるデータ型は列挙型です。列挙型は、フィールドの値を限られたセットに制限できるデータ型です。

MySQLでのBoolean型の使い方を詳しく解説 MySQLでのBoolean型の使い方を詳しく解説 Mar 15, 2024 am 11:45 AM

MySQL でのブール型の使用方法の詳細な説明 MySQL は、一般的に使用されるリレーショナル データベース管理システムです。実際のアプリケーションでは、論理的な true と false の値を表すためにブール型を使用する必要があることがよくあります。 MySQL には Boolean 型の表現方法として TINYINT(1) と BOOL の 2 つがあります。この記事では、ブール型の定義、代入、クエリ、変更など、MySQL でのブール型の使用方法を詳細に紹介し、具体的なコード例を示して説明します。 1. ブール型は MySQL で定義されており、次のようにすることができます。

C言語の基本構文とデータ型の紹介 C言語の基本構文とデータ型の紹介 Mar 18, 2024 pm 04:03 PM

C 言語は、効率的で柔軟かつ強力な、広く使用されているコンピューター プログラミング言語です。 C 言語でのプログラミングに習熟するには、まずその基本的な構文とデータ型を理解する必要があります。この記事では、C言語の基本的な構文とデータ型を例とともに紹介します。 1. 基本構文 1.1 コメント C 言語では、コメントを使用してコードを説明し、理解と保守を容易にすることができます。コメントは、単一行コメントと複数行コメントに分類できます。 //これは 1 行のコメントです/*これは複数行のコメントです*/1.2 キーワード C 言語

See all articles