简体   繁体   English

Javascript全局函数设置局部变量

[英]Javascript global function setting local variable

Why does this return 'foo', not 'foobar'? 为什么返回“ foo”而不是“ foobar”? I need function g to modify (non-global) var v, yet function g is a global function. 我需要函数g修改(非全局)var v,但函数g是全局函数。 Thanks. 谢谢。

f();

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

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

Because you return v from g(v) call but you do not reassign v 因为您从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;
}

Because javascript only works by value, not by reference. 因为javascript仅按值起作用,而不按引用起作用。 See John Hartsock's answer. 参见John Hartsock的答案。

Primitive ALL arguments in javascript (the string argument to g, in this case) are pass-by-value instead of pass-by-reference, which means the v you're working with in function g(v) is a copy of the v in function f. 在JavaScript 原始 的所有参数(该字符串参数克,在这种情况下)是通过按值而不是传递通过引用,这意味着v您正在使用的函数g(V)是的副本v在功能f中。

Edit: all arguments are passed by value, not just primitives. Edit:所有参数都是通过值传递的,而不仅仅是原语。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM