有没有办法知道2个javascript变量指向同一个内存地址?
var my_var = {
id: 1,
attribute: "myAttribute"
}
var copy = my_var;
//someting like
if(copy === my_var) return true;
答案 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中实现它。否则,我们还可以轻松地查看两个指针是否指向同一地址。希望我的回答能提供一些有用的信息。