検索
ホームページウェブフロントエンドjsチュートリアルJavaScript におけるデータ変数のメモリ分析

JavaScript におけるデータ変数のメモリ分析

Mar 17, 2018 pm 03:41 PM
javascriptjs分析する

1.データとは何ですか? *データとは、特定の情報を表すメモリに保存された「もの」のことであり、その本質は 0101 バイナリです。この記事では、皆様のお役に立てればと思って、主に JavaScript におけるデータ変数のメモリ解析について説明します。

eg:18 //この 18 は年齢やスコアなどだけかもしれません。

書き込みプログラム内のデータは特別な意味を持つ必要があります。

*データは読み取り可能で転送可能であるという基本的な特性を持っています(転送可能性は非常に重要です)

        var a=2;
        b=a;//这个是传递a变量的数据的变量 

        a={2,4,5}
        b=a;//这个传递的是a对象的地址值

*すべて(すべて)はデータであり、関数もデータです

「すべてがオブジェクトである」という文は矛盾しています、なぜならデータ基本的なタイプとオブジェクトに分けられます。

※プログラム内のすべての操作の対象:データ

すべての操作はデータの追加、削除、変更、クエリです。操作には、データに対する算術演算の実行、パラメーターを渡す関数の呼び出し、値の割り当てなどが含まれます。

2. メモリとは何ですか?

*メモリースティック(基板)の電源投入後に生成される記憶域(一時)

変数を宣言すると自動的にメモリが割り当てられます
解放されたメモリは再利用可能です(例えば、グローバル変数をグローバル変数を解放する必要があります (つまり、この変数に値を再割り当てします))

*生成と消滅: メモリースティック (集積回路基板)==》電源オン==》生成一定容量のストレージスペース==》各種データをそれぞれ保存==》停電==》すべてのメモリが消失

*メモリのスペースは一時的なものですが、ハードディスクのスペースは永続的です

*1枚メモリの 2 つのデータが含まれています

--> メモリに格納されているデータ (通常はデータ/アドレス データ)

--> メモリ アドレス値データ


* メモリの分類

-> ): グローバル変数、ローカル変数

-> ヒープ (大空間): オブジェクト


3. 変数とは何ですか?

*変数名と変数値で構成される値の変化量

*変数は小さなメモリに相当し、変数名(識別)はメモリを見つけるために使用され、変数の値はメモリに保存されている内容

var a= 3;

4. メモリ、データ、変数の関係は何ですか?

* メモリはデータを保存するためのコンテナです

* 変数(変数名)はメモリの識別子です。変数を通じて対応するメモリを見つけて、メモリ内のデータを操作 (読み取り/書き込み) します

5. 代入とメモリの問題

質問: var a=XXX、a のメモリには正確に何が格納されますか?

        //了解内存只保存俩种值(基本类型值,对象地址值)
        var a=2;//a内存是基本类型的值:3
        a={}//a内存是{}的地址值

        var b=4;
        a=b;//a中保存的是:b保存的基本类型的值4

        b=[];
        a=b;//a中保存的是:b中的地址值


6. 参照変数の代入の問題について

(1)。2つの参照変数が同じオブジェクトを指しており、1つの参照変数を通じて内部データが変更され、もう1つの参照変数も参照可能です


(2). 2 つの参照変数が同じオブジェクトを指し、1 つの参照変数は別のオブジェクトを指し、もう 1 つの参照変数は元のオブジェクトを指します

*2个引用变量指向同一个对象,通过一个引用变量修改内部数据,另一个引用变量也看得见
        var a1={n:3};
        var a2=a1;
        a1.n=4;
        console.log(a2.n)//4

        function fn (a) {
            a.n=8;//这是改变对象内部的数据,并没有改变对象
        }
        fn(a1);
        console.log(a1.n,a2.n)//8  8//注意:当fn执行完时,a也就释放内存


7。 jsで関数を呼び出す場合、値渡しなのか参照渡しなのか ※参照ではなく値渡しのみ、すべての値が渡されます。ただ、この値は基本データの場合もあれば、参照(アドレス)データ(オブジェクト、関数、配列)の場合もあります
※後者を参照転送とみなした場合、転送も参照転送も可能です

        var b1={n:3};
        var b2=b1;
        //b1={n:6};console.log(b2.n);//3


        function  fn1(a){a={n:9}}//a={n:9}这是创建了一个新的对象
        fn1(b1);
        console.log(b1.n,b2.n);//3  3

8 .js エンジンはメモリをどのように管理しますか? JSエンジンは、JSコードを解析および実行するコードです。 : 関数の実行後に自動的に解放されます

*オブジェクトを保存するためのヒープ領域メモリ: メモリへの参照がない場合、オブジェクトはガベージ オブジェクトとなり、ガベージ コレクターは後でこのメモリを再利用して解放します

        var a=3;
        function fn(a1){...}
        fn(a)//传递的是a的值(基本值)-----传递变量参数应该是值传递
        a=function (){...}
        fn(a)//传递的是a的值(引用类型也就是地址值)---
        //传递变量参数应该是值传递也可以说是引用传递

関連おすすめ:


JavaScriptのデータ傍受の問題を詳しく解説



JavaScriptからPHPにデータを転送する方法

JavaScriptのデータ型変換方法のまとめ_基礎知識

以上がJavaScript におけるデータ変数のメモリ分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScript in Action:実際の例とプロジェクトJavaScript in Action:実際の例とプロジェクトApr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptとWeb:コア機能とユースケースJavaScriptとWeb:コア機能とユースケースApr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンの理解:実装の詳細JavaScriptエンジンの理解:実装の詳細Apr 17, 2025 am 12:05 AM

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Python vs. JavaScript:学習曲線と使いやすさPython vs. JavaScript:学習曲線と使いやすさApr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Python vs. JavaScript:コミュニティ、ライブラリ、リソースPython vs. JavaScript:コミュニティ、ライブラリ、リソースApr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへ:すべてがどのように機能するかC/CからJavaScriptへ:すべてがどのように機能するかApr 14, 2025 am 12:05 AM

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

JavaScriptエンジン:実装の比較JavaScriptエンジン:実装の比較Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

メモ帳++7.3.1

メモ帳++7.3.1

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

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール