一尘不染

javascript中有指针吗?

javascript

我以前使用过C ++,并且意识到指针非常有用。javascript中有没有像指针一样的东西?javascript是否有指针?我想使用类似以下内容的指针:

var a = 1;
var b = "a";
document.getElementById(/* value pointed by b */).innerHTML="Pointers";

我知道这是一个非常简单的示例,我可以使用a,但是在几个更复杂的示例中,我发现指针非常有用。有任何想法吗?


阅读 458

收藏
2020-05-01

共1个答案

一尘不染

不,JS没有指针。

通过传递 引用副本 来传递对象。程序员无法访问任何表示对象地址的类似C的“值”。

在一个函数中,可以通过该引用更改传递的对象的 内容 ,但是您不能修改调用者拥有的引用,因为您的引用只是一个副本:

var foo = {'bar': 1};

function tryToMungeReference(obj) {
    obj = {'bar': 2};  // won't change caller's object
}

function mungeContents(obj) {
    obj.bar = 2;       // changes _contents_ of caller's object
}

tryToMungeReference(foo);
foo.bar === 1;   // true - foo still references original object

mungeContents(foo);
foo.bar === 2;  // true - object referenced by foo has been modified
2020-05-01