Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关于变量的澄清_Javascript_Variables_Program Structure - Fatal编程技术网

Javascript 关于变量的澄清

Javascript 关于变量的澄清,javascript,variables,program-structure,Javascript,Variables,Program Structure,最近,在阅读Marijn Haverbeke的《Eloguent Javascript》一书时,在第2章:程序结构,第2节:变量中,我遇到了以下语句: 它们(变量)不包含值;他们抓住了他们 然后,他继续用一只章鱼和多只手的类比来演示变量是如何掌握值的 这是我第一次看到这样的变量特征。在我读过的其他书籍和/或文章中,变量通常被比作(计算机内存中)包含值的框 我的问题是:哪一个是正确的 变量可以看作是包含值的框 变量不包含值,它们只掌握值 是我脑子里想的全错了吗?这两种解释的意思是一样的吗?我认为H

最近,在阅读Marijn Haverbeke的《Eloguent Javascript》一书时,在第2章:程序结构,第2节:变量中,我遇到了以下语句:

它们(变量)不包含值;他们抓住了他们

然后,他继续用一只章鱼和多只手的类比来演示变量是如何掌握值的

这是我第一次看到这样的变量特征。在我读过的其他书籍和/或文章中,变量通常被比作(计算机内存中)包含值的框

我的问题是:哪一个是正确的

  • 变量可以看作是包含值的框
  • 变量不包含值,它们只掌握值

  • 是我脑子里想的全错了吗?这两种解释的意思是一样的吗?

    我认为Haverbeke试图通过这句话说的是,所有在javascript中不是原语的变量都是引用

    在回答你的问题时,两种解释都是正确的,但适用于不同的语境

    让我们看看盒子的方法。我们可以将变量视为包含基本值的框。在javascript中,它们是数字、字符串、null、未定义和布尔值

    现在,我们来谈谈章鱼方法。javascript中的其他内容太大,无法装入框中。假设你想把房子放在盒子里。这根本不合适。这就是为什么Haverbeke说变量掌握值。有一个很大的领域,你所有的东西都太大了,放不下盒子。你还有一个盒子,但里面没有这个东西。相反,它在字段中包含可以找到值的坐标。这称为对对象的引用,或内存中对象的地址(字段)


    抓取概念旨在确保您不会认为传递对象会复制它。将对象从一个变量传递到另一个变量时,对象是相同的。你有两个地址相同的盒子。从其中一个变量更改对象将同时更改两个变量。

    1或2,这有什么关系?它们只是类比。变量既不是盒子也不是触手,最后它们只是计算机内部的电信号。你可以使用任何你想要的心理图像。我认为类比对于理解持有标量值的变量与持有对象引用的变量之间的区别是很有用的。显然,这两种情况至少在逻辑上(如果不是真实的话)是有区别的。我说得对吗?