Javascript全局函数设置局部变量

时间:2011-04-06 16:53:53

标签: javascript global-variables

为什么这会返回'foo',而不是'foobar'?我需要函数g来修改(非全局)var v,但函数g是一个全局函数。感谢。

f();

function f() {
  var v = 'foo';
  g(v);
  alert(v);
}

function g(v) {
  v = v+'bar';
  return v;
}

3 个答案:

答案 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:所有参数都是按值传递的,而不仅仅是原语。