目次
基本型と参照型
基本タイプ: スタックに格納される単純なデータ セグメント。その値は、変数によってアクセスされる場所に直接格納されます。これは、基本型が占めるスペースが固定されているため、基本型をより小さなメモリ領域 (スタック) に格納できるため、変数の値を迅速にクエリできるためです。
参照型: ヒープに格納されるオブジェクト。スタックに格納される値は、格納されるオブジェクトのメモリアドレスを指すために使用されるポインター (ポイント) です。これは、参照型の値のサイズが変化するためです。スタックに置かれます。そうしないと、変数の検索速度が低下します。逆に、スタックに格納される値はオブジェクトのアドレスであり、アドレスのサイズは固定されているため、スタックに格納しても変数のパフォーマンスには影響しません。
変数のコピーの違い
参照型: オブジェクトのメモリ アドレスを保持する変数が別の変数にコピーされると、メモリ アドレスが新しい変数に割り当てられます。これは、両方の変数がヒープ メモリ内の同じオブジェクトを指すことを意味します。どちらかがもう一方に反映されます。 (ここで理解すべきことの 1 つは、オブジェクトをコピーするときに、同一のオブジェクトがヒープ メモリに作成されるのではなく、オブジェクトへのポインターを保持する変数が 1 つだけ存在するということです。) ポインターがもう 1 つあります。
参照型: 渡される値はメモリアドレスであるため、すべて同じオブジェクトを指します。
ホームページ ウェブフロントエンド jsチュートリアル jsの基本データ型と参照データ型の違いについて

jsの基本データ型と参照データ型の違いについて

Oct 24, 2017 am 09:20 AM
javascript 引用 タイプ

スタックとヒープ
スタックは自動的に割り当てられるメモリ空間であり、システムによって自動的に解放されます。一方、ヒープは動的に割り当てられるメモリであり、サイズは可変であり、自動的には解放されません。

基本型と参照型

基本型: スタックメモリに格納される単純なデータセグメント。データサイズが決定され、メモリ空間サイズを割り当てることができます。

基本的なデータ型には、未定義、Null、ブール、数値、文字列が含まれ、それらの値はスタックに直接保存されます。

参照型: ヒープ メモリに保存されるオブジェクトの値であり、アドレス ポインタとスタックには、実際の値がヒープに保存され、ヒープ内の各領域は異なるサイズを持ち、状況に応じて特別に割り当てられます。参照型 (オブジェクト、配列、関数など) の値にアクセスする必要がある場合、まずスタックからオブジェクトのアドレス ポインターを取得し、次にヒープ メモリから必要なデータを取得します。


 var s='str',t= 0,floatNum=1.1;
    var obj={
        a:10,
        b:'Joel',
        c:function(){
            console.log('function');
        }
    }
ログイン後にコピー

js 基本数据类型引用数据类型内存分配

上に示すように:

基本データ型の値はスタックに保存され、参照型のオブジェクト参照はスタックに保存され、値はヒープに保存されます。

変数宣言時のさまざまなメモリ割り当て:

基本タイプ: スタックに格納される単純なデータ セグメント。その値は、変数によってアクセスされる場所に直接格納されます。これは、基本型が占めるスペースが固定されているため、基本型をより小さなメモリ領域 (スタック) に格納できるため、変数の値を迅速にクエリできるためです。

参照型: ヒープに格納されるオブジェクト。スタックに格納される値は、格納されるオブジェクトのメモリアドレスを指すために使用されるポインター (ポイント) です。これは、参照型の値のサイズが変化するためです。スタックに置かれます。そうしないと、変数の検索速度が低下します。逆に、スタックに格納される値はオブジェクトのアドレスであり、アドレスのサイズは固定されているため、スタックに格納しても変数のパフォーマンスには影響しません。

メモリ割り当てメカニズムが異なると、アクセスメカニズムも異なります

JavaScript では、ヒープ メモリに格納されているオブジェクトへの直接アクセスは許可されていないため、オブジェクトにアクセスするときは、まずメモリ スタックにアクセスしてメモリ内のオブジェクトを取得します ヒープ内のアドレス、このアドレスを使用してオブジェクト内の値を取得します。これは伝説的な参照によるアクセスですが、基本型の値はメモリ スタックに直接格納されます。

変数のコピーの違い

基本的なタイプ: 元の値を保持する変数が別の変数にコピーされると、元の値のコピーが新しい変数に代入されます。その後、2 つの変数は完全に独立したものになります。同じ値を持っています。

参照型: オブジェクトのメモリ アドレスを保持する変数が別の変数にコピーされると、メモリ アドレスが新しい変数に割り当てられます。これは、両方の変数がヒープ メモリ内の同じオブジェクトを指すことを意味します。どちらかがもう一方に反映されます。 (ここで理解すべきことの 1 つは、オブジェクトをコピーするときに、同一のオブジェクトがヒープ メモリに作成されるのではなく、オブジェクトへのポインターを保持する変数が 1 つだけ存在するということです。) ポインターがもう 1 つあります。

パラメータの受け渡し(実パラメータを仮パラメータにコピーする処理)の違い

ECMAScriptの関数パラメータはすべて値渡しですが、プリミティブ型と参照型の値に違いがあるのはなぜですか?メモリ割り当ての違いだけが原因ではありません。

基本的なデータ型: 変数の値のコピーを作成してパラメーターに渡すだけです。その後、パラメーターと変数は相互に影響を与えません。

参照型: 渡される値はメモリアドレスであるため、すべて同じオブジェクトを指します。

以上がjsの基本データ型と参照データ型の違いについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

ビデオ マトリックス アカウントを作成するにはどうすればよいですか?どのようなタイプのマトリックスアカウントがありますか? ビデオ マトリックス アカウントを作成するにはどうすればよいですか?どのようなタイプのマトリックスアカウントがありますか? Mar 21, 2024 pm 04:57 PM

ショートビデオプラットフォームの人気に伴い、ビデオマトリックスアカウントマーケティングが新たなマーケティング手法となっています。企業や個人は、さまざまなプラットフォームで複数のアカウントを作成および管理することで、ブランドのプロモーション、ファンの増加、製品の販売などの目標を達成できます。この記事では、ビデオ マトリックス アカウントの効果的な使用方法について説明し、さまざまな種類のビデオ マトリックス アカウントを紹介します。 1. ビデオ マトリックス アカウントを作成するにはどうすればよいですか?優れたビデオ マトリックス アカウントを作成するには、次の手順に従う必要があります。 まず、ブランド コミュニケーション、ファンの増加、製品の販売など、ビデオ マトリックス アカウントの目標を明確にする必要があります。明確な目標を持つことは、それに応じた戦略を立てるのに役立ちます。 2. プラットフォームの選択: 対象視聴者に基づいて、適切なショートビデオ プラットフォームを選択します。現在主流のショートビデオプラットフォームには、Douyin、Kuaishou、Huoshan Videoなどが含まれます。

参照型を返す C++ 関数の利点は何ですか? 参照型を返す C++ 関数の利点は何ですか? Apr 20, 2024 pm 09:12 PM

C++ で参照型を返す関数の利点は次のとおりです。 パフォーマンスの向上: 参照による受け渡しによりオブジェクトのコピーが回避され、メモリと時間が節約されます。直接変更: 呼び出し元は、返された参照オブジェクトを再割り当てせずに直接変更できます。コードの簡素化: 参照渡しによりコードが簡素化され、追加の代入操作は必要ありません。

C++ 参照とポインター パラメーターの受け渡しを使用するにはどうすればよいですか? C++ 参照とポインター パラメーターの受け渡しを使用するにはどうすればよいですか? Apr 12, 2024 pm 10:21 PM

C++ の参照とポインターはどちらも関数パラメーターを渡す方法ですが、違いがあります。リファレンスは変数のエイリアスです。リファレンスを変更すると元の変数が変更され、ポインタには変数のアドレスが格納されます。ポインタ値を変更しても元の変数は変更されません。参照またはポインターの使用を選択する場合は、元の変数を変更する必要があるかどうか、NULL 値を渡す必要があるかどうか、パフォーマンスに関する考慮事項などの要素を考慮する必要があります。

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

See all articles