通过参数修改函数内部的全局变量

Modify global variable inside function via parameter

本文关键字:内部 全局变量 函数 修改 参数      更新时间:2023-09-26

下面是一个例子:

let wish = 'Happy birthday!';
function translate(msg) {
  msg = 'Alles Gute zum Geburtstag!';
}
translate(wish);
console.log(wish);

我意识到它不会修改wish,因为JavaScript是"通过值传递"而不是"通过引用传递",所以我怎么能通过将值传递给函数来修改该变量(在函数之外)?不将wish更改为对象或数组来保存我的字符串而不是原语,这是不可能的吗?

不使用全局变量,而是使用对象。

let wish = {
  msg: 'Happy birthday!'
};
function translate(obj) {
  obj.msg = 'Alles Gute zum Geburtstag!';
}
translate(wish);
console.log(wish.msg);

let wish = 'Happy birthday!';
function translate(msg) {
   msg = 'Alles Gute zum Geburtstag!';
   return wish=msg;
}
translate(wish);
console.log(wish); //Alles Gute zum Geburtstag!

不必使用return,但是全局变量可以在较小范围内没有相同名称的var的任何地方设置。