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

Modify global variable inside function via parameter

这是一个例子:

let wish = 'Happy birthday!';

function translate(msg) {
  msg = 'Alles Gute zum Geburtstag!';
}

translate(wish);
console.log(wish);

我意识到它不会修改 wish 因为 JavaScript 是 "pass by value" 而不是 "pass by reference",所以我如何修改那个变量(在函数)通过​​向函数传递一个值?如果不将 wish 更改为对象或数组来保存我的字符串而不是基元是不可能的吗?

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,但可以在较小范围内没有同名变量的任何地方设置全局变量。

使用对象代替全局变量。

let wish = {
  msg: 'Happy birthday!'
};

function translate(obj) {
  obj.msg = 'Alles Gute zum Geburtstag!';
}

translate(wish);
console.log(wish.msg);