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

Mer*_*lin 17 javascript

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

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

var copy = my_var;

//someting like
if(copy === my_var) return true;
Run Code Online (Sandbox Code Playgroud)

fre*_*ish 15

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

一般来说答案是否定的.原始类型(如数字)按值传递.所以我们有

> var x = 1;
> var y = 1;
> x === y;
true
Run Code Online (Sandbox Code Playgroud)

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

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

> var x = {test: 1};
> var y = {test: 1};
> x === y;
false
Run Code Online (Sandbox Code Playgroud)


小智 13

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

var x = 1;
var y = x
y = 4;
// x is still 1
Run Code Online (Sandbox Code Playgroud)

永远都是如此.

但是,对象始终通过引用传递

var x = { one: 1, two: 2 };
var y = x;
y.one = 100;
// x.one is now 100
Run Code Online (Sandbox Code Playgroud)