为什么这会返回'foo',而不是'foobar'?我需要函数g来修改(非全局)var v,但函数g是一个全局函数。感谢。
f();
function f() {
var v = 'foo';
g(v);
alert(v);
}
function g(v) {
v = v+'bar';
return v;
}
答案 0 :(得分:8)
因为你从g(v)电话中退回v但你没有重新分配v
f();
function f() {
var v = 'foo';
v = g(v); //you need to assign what is returned
alert(v);
}
function g(v) {
v = v+'bar';
return v;
}
答案 1 :(得分:3)
因为javascript只能按值运行,而不能通过引用运行。见John Hartsock的回答。
答案 2 :(得分:1)
原语 javascript中的所有参数(在这种情况下为g的字符串参数)是按值传递而不是传递引用,这意味着v
你'在函数g(v)中重新使用函数f中的v
的副本。
Edit:
所有参数都是按值传递的,而不仅仅是原语。