ホームページ >ウェブフロントエンド >jsチュートリアル >ボックスの中身は何ですか?!: 変数

ボックスの中身は何ですか?!: 変数

王林
王林オリジナル
2024-08-10 11:42:02923ブラウズ

小さな箱


変数とは何ですか?ほとんど (特に mozilla Web ドキュメント(MDN)) は、これを「値のコンテナー」と説明します。単純な値から関数まで、あらゆる種類のプログラムを参照する名前付きコード。

var foo = "I pity the...";
const group =['Rhonda', 'Jamey', 'Kori', 'Greg'];
let greed = function (root) {
console.log("of all evil");
}

What

写真提供: MDN

変数を「物を保管できる小さな段ボール箱のようなものです。(MDN)」と記述するのが一般的です。これらの箱がなければ、私たちの価値観は萎縮して死んでしまうでしょう。コードの熱は、実装後すぐに消滅します。書籍Eloquent JavaScript(EJS) で述べられているように、変数は「...すぐに使用されなければ、(それらは) 消滅してしまいます」必要があります。永続的な式用のコンテナを作成するには、次の 2 つの方法があります:

  • 宣言: 文字通りの意味です。変数を宣言すると、その存在と名前が確認されますが、それ以外はほとんど確認されません。箱は開いていないので、中身価値を見ることができません。ボックスは閉じていますが、中には何かが入っていると予想されるため (シュレーディンガーの雰囲気、誰か?)、これらのボックスに正当な名前の値 未定義 を与えます。
var question;
let box;
const cat;
  • 初期化: 初期化は、「ここにボックスがあり、これが中身です。」という JavaScript の方法です。このボックスは大きく開いた状態で存在し、その中身を簡単に見ることができます。 「= 演算子」(EJS) は、ボックスの中にあるものを示すために使用されます。本当に何でもいいのです。または何もありません。「このボックスは開いていますが、中には間違いなく何もありません」と言うには、nullという用語を使用します。初期化の例をいくつか示します。
var question = true;
let box = null;
const cat = 4 + 3;

= を読み取ると、常にその左側にあるものに右側にあるものの値が与えられます。このようにして、ボックス
には何も入っていないことがわかります。 他の開いたボックスと同様に、その中身はいつでも好きなときに移動できます。 "* = 演算子を既存の (変数) に対していつでも使用して、変数を現在の値から切り離し、新しい値を指すようにすることができます:*"(EJS)

let greenLight = false;
//*the greenLight box contains the false value*
greenLight = true;
//*greenLight is now set to the value true*

このボックスには false 値が存在していましたが、簡単な変更を 1 つ行うだけで、まったく新しい値が内部に存在します。とても簡単です!
さて、コンテナ、ボックス の概念を徹底的に調査し、内面化したように感じます。では、なぜそれが間違っているのかを見てみましょう。

ボックスを学びましょう。箱は忘れてください。

ご覧になったかもしれませんが、変数の「コンテナ」哲学は多くのことに非常に適しています。それでも、ある時点で、ボックスは複雑になり始めます:

let a = 5;
let b = a;
a = 7;
console.log(b);// 5

ボックス b の中にボックス a があり、ボックス b に新しい値が入っている場合、a にも同じことが当てはまりますか?つまり、2 つの箱を一緒にすると、中身が同じになることが多いですよね。 不正解です。 このようなことを考えると、変数のボックスの概念が混乱してきます。変数は実際にはボックスのように動作しないことがよくあるからです。

What

拘束と触手

実際のところ、この場合、データはずっとそこにあったと考えたほうがよいでしょう。本質的に、変数はそのデータを重要かつアクセスしやすくするものにすぎません。プログラムはtechSpaceの広大な範囲に浮遊しており、「(プログラムを)捕まえて保持する」(EJS)かどうかは私たちの変数次第です。最初は少し奇妙ですが、よく考えてみると非常に理にかなっています。 Eloquent JavaScript では次のように説明されています:

"バインディングは箱ではなく触手として想像してください。バインディングには値が含まれていません。値を把握します。2 つのバインディングは同じ値を参照できます。プログラムは、まだアクセスできる値にのみアクセスできます。何かを思い出す必要があるときは、触手を伸ばして保持するか、既存の触手を再びそれに接続します。"

さて、ここでのアタッチは少し欺瞞的です。これらの「触手」は、保持できる十分に小さい値 (64 ビット) のみを「把握」するからです。これらの値は「simple dataTypes」(EJS) と呼ばれ、数値、文字列、ブール値が含まれます。値が単純な場合、私たちの触手はそれを包み込み、保持します。一種の。これを 値による渡し(GFG) と呼びます。 「ある種」と言うのは、触手が探す値が十分に単純であれば、わざわざ同じ値を保持する必要はなく、ただコピーを作成してそれ自体で保持するだけだからです。

上記の例では、b の触手は a と同じ 5 をわざわざ掴もうとはしませんでした。そのため、a が縞模様を変え、その 5 が宇宙に消えたとき、b には元々保持していた 5 のコピーがまだ残っていました。次に、少し違うことを試してみましょう:

var a = [13, 40, 27];

var b = a;
b.push(5, 1)//push is a method that moves these values into the end an array

console.log(a);//[13, 40, 27, 5, 1];

This example is a bit more complex. Our complex dataTypes(arrays, objects, functions) are much to big to go around making copies of them to wrap our tentacles around, so what we do is simply point to the original. An act we like to call Pass by reference(GFG). In this example, b can't hold on to its own array, so when it goes through a change, the original array it points to feels that change pass through it.

This was a small introduction to how we name, grasp, point to, and otherwise utilize data for our own brilliant purposes. It's easy to overlook, but without variables, we would all be lost in a sea of code, digital waters all around us, grasping away as digital water falls right through our fingers. Variables are the boats that carry us all to our destination, and I, for one, appreciate the ride.

References by initial
(MDN)
https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Variables
(EJS)
https://eloquentjavascript.net/02_program_structure.html
(GFG)
https://www.geeksforgeeks.org/pass-by-value-and-pass-by-reference-in-javascript/

以上がボックスの中身は何ですか?!: 変数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。