【发布时间】:2017-01-27 16:59:57
【问题描述】:
我正在尝试通过引用传递原始变量。
var foo = 2;
function inc (arg) {
arg++
}
inc(foo) //won't increment foo
上述方法不起作用,因为在 JavaScript 中,基元(如数字)是按值传递的,而对象是按引用传递的。为了通过引用传递原语,我们需要将它们声明为对象:
var foo = new Number(2)
function inc (arg) {
arg++
}
inc(foo) //increments foo
这似乎是一个非常老套的解决方法,并且可能会降低执行速度。在其他 OO 语言中,我们可以将“指针”或“引用”传递给函数。 JS中有这样的东西吗?谢谢!
【问题讨论】:
-
你在问什么? JavaScript 中没有基元的传递引用。
-
真正的问题是作用域 你应该阅读 JS 是如何工作的。一个简单的链接:w3schools.com/js/js_scope.asp
-
In other OO languages, we can pass "pointers" or "references" to functions几乎没有。例如,Java 甚至没有函数(无论如何都不是真正的函数——Java 8 在类上具有语法糖)。问题是,您为什么希望能够通过引用传递?这样做有什么好处?
标签: javascript node.js function reference