Javascript和Python变量差异

时间:2015-04-23 13:52:12

标签: javascript python

我刚开始学习Javascript并且以前习惯过Python。

Python变量作为对内存中“块”的引用。其他别名可以指向内存中的块,当没有更多引用指向它时,垃圾收集会清除它。

但是我不确定Javascript中是否相同? Javascript是否使用直接指针而不是引用? 那么javascript是否具有与Python相同的浅或深拷贝差异? (我听说JS可能没有可变性或不变性的概念,所以情况可能并非如此)。

任何人都可以解释Javascript变量的详细信息,因为我无法想象这一点吗?

感谢。

PS如果我的术语有点不对劲,我仍然是编程的新手,所以道歉。

1 个答案:

答案 0 :(得分:2)

是的,javascript以类似的方式工作。

布尔值,数字和字符串按值存储。因此,在此代码段中,例如

var a = 122;
var b = 122;

a === b将是真的。

然而,其他所有内容都通过引用存储,并按照您在问题中的描述自动进行垃圾收集。因此,例如,在此代码段中,

var a = [1, 2, 3, 4]
var b = [1, 2, 3, 4]

a === b将是假的。

编辑:

在Python中,数组和字典相等是按值的,但只有当实例相同时,类实例才相等。在javascript中,Object基本上是一个字典,其中键必须是字符串。因为在javascript中使用对象来填充与Python中的类实例相同的角色(你会对它的工作效果感到惊讶),只有当对象是相同的对象时,对象才是相同的。数组继承自Object,因此也可以通过引用。