怎么知道两个javascript变量指向相同的内存地址

时间:2014-01-30 13:18:34

标签: javascript

有没有办法知道2个javascript变量指向同一个内存地址?

var my_var = {
    id: 1,
    attribute: "myAttribute"
}

var copy = my_var;

//someting like
if(copy === my_var) return true;

4 个答案:

答案 0 :(得分:13)

  

有没有办法知道2个javascript变量是否指向同一个内存地址?

通常答案是。原始类型(如数字)按值传递。所以我们有

> var x = 1;
> var y = 1;
> x === y;
true

即使它们没有引用相同的内存位置(嗯,这是一个实现细节,但它们并没有指向至少在V8中的相同内存地址)。

但如果双方都是对象,那么是:使用===== 。如果双方都是对象,那么每个操作员都会检查它们是否指向相同的内存地址。

> var x = {test: 1};
> var y = {test: 1};
> x === y;
false

答案 1 :(得分:9)

你不能在C中使用别名变量。在javascript中,类似

var x = 1;
var y = x
y = 4;
// x is still 1
总是如此。

但是,对象总是通过引用传递

var x = { one: 1, two: 2 };
var y = x;
y.one = 100;
// x.one is now 100

答案 2 :(得分:1)

在javascript中,当我们声明多个具有相同值的变量时,每个变量都指向相同的内存位置。基本上javascript遵循引用计数算法。在Python中也会发生相同的情况。

答案 3 :(得分:-3)

在Python中,您可以使用id(variableName)来获取内存地址:

>>> x = "hello world"
>>> id(x)
4347327152
>>> x = 2
>>> id(x)
4305328544

但是我不知道如何在JavaScript中实现它。否则,我们还可以轻松地查看两个指针是否指向同一地址。希望我的回答能提供一些有用的信息。