当前位置: 首页 > 面试题库 >

javascript中有指针吗?

令狐宏浚
2023-03-14
问题内容

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

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

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


问题答案:

不,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


 类似资料:
  • 问题内容: 我们可以传递不可变的变量引用作为函数中的参数吗? 例: 问题答案: 由于JavaScript不支持通过引用传递参数,因此您需要将变量设置为对象: 在这种情况下,是对对象的引用。当传递给函数时,该引用将复制到。因此,与内存中的引用相同。改变财产的性质影响财产的性质。 Javascript将始终按值传递函数参数。那只是语言的规范。您 可以在两个函数都本地的作用域中创建,而根本不传递变量。

  • 如果C中有指针(char*names[])和指向指针的指针(char**cur_name=names);有指向指针的指针吗? 或者指向指针的指针只是一个链表?也许这是个愚蠢的问题,但我想知道答案。

  • 问题内容: 如果Java没有指针,那么关键字在Java中做什么? 问题答案: 如前所述,Java有引用。这些有什么不同? 你不能对这些执行算术运算或其他类似运算 它们不指向包含对象的内存(即它们不是另一个名称的指针)。JVM可以自由地在VM内存中移动对象,并且很可能在垃圾回收期间执行。尽管对象在内存中移动,但是引用仍然指向该对象。 因此它们不像C ++引用(直接指向对象)。也许更好的名字是hand

  • 问题内容: 我是Java菜鸟。我已经掌握了将C / C ++指针转换为Java引用的概念,并且进展相当顺利。 我打了一段有指针的代码(即* ptr)。我需要取消引用指针并更改其指向的指针的值(即 ptr =&newthing;) 在Java中这似乎要困难得多。是否有人对如何解决此问题有任何想法?快速谷歌搜索什么都没有。 这是C ++中的代码示例。我想在Java中获得类似的工作,但是ptr_to_p

  • 指针可以指向一份普通类型的数据,例如 int、double、char 等,也可以指向一份指针类型的数据,例如 int *、double *、char * 等。 如果一个指针指向的是另外一个指针,我们就称它为 二级指针,或者 指向指针的指针。 假设有一个 int 类型的变量 a,p1是指向 a 的指针变量,p2 又是指向 p1 的指针变量,它们的关系如下图所示: 将这种关系转换为C语言代码: 指针变

  • 问题内容: 我有一个关于在嵌套函数方案中如何处理“ this”指针的问题。 假设我将以下示例代码插入到网页中。当我调用嵌套函数“ doSomeEffects()”时出现错误。我检查了Firebug,它表明当我使用该嵌套函数时,“ this”指针实际上指向全局“ window”对象,这是我所没有想到的。我一定不能正确理解某些东西,因为我认为自从我在对象的函数中声明了嵌套函数以来,它就应该具有相对于该