我以前用过C++,我意识到指针是非常有用的。在JavaScript中有什么东西像指针一样吗?JavaScript有指针吗?我喜欢在我想使用类似这样的东西时使用指针:
var a = 1;
var b = "a";
document.getElementById(/* value pointed by b */).innerHTML="Pointers";
字符串
我知道这是一个非常简单的例子,我可以只使用a
,但有几个更复杂的例子,我会发现指针非常有用。
我以前用过C++,我意识到指针是非常有用的。在JavaScript中有什么东西像指针一样吗?JavaScript有指针吗?我喜欢在我想使用类似这样的东西时使用指针:
var a = 1;
var b = "a";
document.getElementById(/* value pointed by b */).innerHTML="Pointers";
字符串
我知道这是一个非常简单的例子,我可以只使用a
,但有几个更复杂的例子,我会发现指针非常有用。
7条答案
按热度按时间vwhgwdsa1#
JS没有指针。
对象是通过传递一个引用的副本来传递的。程序员不能访问任何类似C语言的表示对象地址的“值”。
在一个函数中,你可以通过这个引用改变一个传递对象的内容,但是你不能修改调用者的引用,因为你的引用只是一个副本:
字符串
vd2z7a6w2#
JavaScript中肯定有指针;对象就是指针。
字符串
如果不再指向某个内存位置,则那里的数据将丢失。
与C不同,你看不到指针的实际地址,也看不到指针的实际值,你只能解引用它(在它指向的地址处获得值)。
fruv7luv3#
我刚做了一件奇怪的事,也成功了。
传递一个函数,将其参数填充到目标变量中,而不是传递指针。
字符串
这可能看起来有点邪恶,但工作得很好。在这个例子中,我创建了一个通用的表盘,它可以以这个小函数“(v)=>{target = v}"的形式分配任何目标。不知道它在性能方面会做得多好,但它表现得很漂亮。
pbpqsu0x4#
由于JS通过值(如果被引用对象被完全改变)或通过引用(如果被引用对象的字段被改变)传递对象的性质,不可能完全替换被引用对象。
然而,让我们使用可用的方法:替换引用对象的单个字段。通过这样做,以下函数可以实现您所要求的:
字符串
对于user3015682给出的示例,您将使用以下函数:
型
ulmd4ohb5#
通过引用和数组进行排序。
字符串
由于原始值未被修改,因此不会创建新引用。
型
当重新分配变量中的复合值时,将创建一个新引用。
ryoqjall6#
是的,事实上,所有的对象和数组都是指针。如果我必须照字面意思理解你的例子,那么,你只需要把变量变成对象类型。
字符串
然后是pointers.js:
型
JavaScript中的主要区别是指针实际呈现的方式或缺乏直接识别指针的方法。在C,Golang和C#中,指针使用“&”运算符。
这是基本的。在了解了这个概念之后,你现在可以将它进一步开发成函数指针,链表,或者像结构一样使用它;并以C++的方式使用JavaScript。尽管我建议你使用当前的JavaScript约定来命名你的变量。即
型
41zrol4v7#
从技术上讲,JS没有指针,但我发现了一种模仿它们行为的方法;)
字符串