首页 > web前端 > js教程 > 盒子里有什么?!:变量

盒子里有什么?!:变量

王林
发布: 2024-08-10 11:42:02
原创
923 人浏览过

小盒子


什么是变量?大多数(尤其是 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) 中所述,变量需要“...立即使用,否则(它们)将消散”,然后有两种方法可以创建这些用于持久表达的容器:

  • 声明:顾名思义。声明一个变量只是确认它的存在和名称,但除此之外就没有什么了。盒子没有打开,所以我们看不到它的内容,或。因为盒子是封闭的,但我们希望里面有东西,(薛定谔共鸣,有人吗?)我们给这些盒子赋予了正确命名的值未定义
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 值曾经驻留在此框中,但通过一个简单的更改,里面就有一个全新的值。就这么简单!
好吧,感觉我们已经彻底探索并内化了容器、盒子概念。现在我们来探讨一下为什么它是错误的。

学习盒子。忘记盒子了。

正如您可能已经看到的那样,变量的“容器”哲学对于很多事情来说都非常有用。尽管如此,在某些时候,盒子开始变得复杂:

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

登录后复制

如果盒子 b 里面有盒子 a,并且盒子 b 填充了新值,那么对于 a 来说不是同样如此吗?我的意思是,两个盒子放在一起时,里面装满的东西往往是相同的,对吗? 错误。当你思考这些事情时,变量的盒子概念会变得令人困惑,因为通常,变量根本不像盒子。

What

束缚和触手

确实,在这种情况下,最好将数据视为一直存在。从本质上讲,变量只是使该数据变得重要且易于访问。这些程序漂浮在广阔的 techSpace 中,由我们的变量来“抓住并保留(它们)”(EJS)。乍一看有点奇怪,但仔细想想就很有意义。 Eloquent JavaScript 是这样描述的:

"你应该将绑定想象成触手而不是盒子。它们不包含值;它们抓住它们——两个绑定可以引用同一个值。程序只能访问它仍然可以访问的值。当你需要记住某件事时,你要么长出一根触手来抓住它,要么将你现有的触手重新附着在它上面。

现在,attach在这里有点欺骗性,因为这些“触角”只能“抓住”足够小的值来容纳(64位)。这些值称为“简单数据类型”(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中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板