我刚开始学习Javascript并且以前习惯过Python。
Python变量作为对内存中“块”的引用。其他别名可以指向内存中的块,当没有更多引用指向它时,垃圾收集会清除它。
但是我不确定Javascript中是否相同? Javascript是否使用直接指针而不是引用? 那么javascript是否具有与Python相同的浅或深拷贝差异? (我听说JS可能没有可变性或不变性的概念,所以情况可能并非如此)。
任何人都可以解释Javascript变量的详细信息,因为我无法想象这一点吗?
感谢。
PS如果我的术语有点不对劲,我仍然是编程的新手,所以道歉。
答案 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,因此也可以通过引用。