簡體   English   中英

Javascript全局函數設置局部變量

[英]Javascript global function setting local variable

為什么返回“ foo”而不是“ foobar”? 我需要函數g修改(非全局)var v,但函數g是全局函數。 謝謝。

f();

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

function g(v) {
  v = v+'bar';
  return 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;
}

因為javascript僅按值起作用,而不按引用起作用。 參見John Hartsock的答案。

在JavaScript 原始 的所有參數(該字符串參數克,在這種情況下)是通過按值而不是傳遞通過引用,這意味着v您正在使用的函數g(V)是的副本v在功能f中。

Edit:所有參數都是通過值傳遞的,而不僅僅是原語。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM