传递 AND 更改函数中的变量 [duplicate]

Passing AND Changing a Variable in a Function [duplicate]

提问人:user1138 提问时间:11/4/2023 最后编辑:user1138 更新时间:11/4/2023 访问量:54

问:

这一定是最基本的问题。也许今晚我的大脑陷入了 1990 年代初的 Pascal 和 C 近视,但为什么这个值没有被传递回下面?如果我完全删除参数并在函数中将“str”更改为“name”(使其成为全局变量),那么它就可以工作了。

  • 是否有可能这样做,如果是这样,我该如何传递这样的变量?

我会在这里将 JS 与什么语言语法混淆?提前感谢您的教育。:)

var name = 'Jean-Luc';
  
function change(str) {
  str = 'Wesley';
}
  
change(name);
console.log(name); // returns Jean-Luc
                   // why is it not Wesley?
JavaScript 函数 变量

评论

0赞 Pointy 11/4/2023
你可以让 C 语言这样做,或者类似的事情,但通常你不会这样做。C 也是一种按值传递的语言,Pascal 也是如此。我唯一知道的语言(嗯是唯一常见的语言)是 FORTRAN,我怀疑那是在 50+ 年前的 FORTRAN 中。
0赞 Ilja KO 11/4/2023
我真的在这里没有看到任何与 JS 相关的问题,StackOverflow 用于解决编码问题,而不是询问您使用哪种语言来混淆您期望从 JS 代码中获得的某些代码行为。字符串是 JS 中不可变的基本数据类型,就像数字一样,因此它们是按值传递的。JS在传递对象类型变量时并不知道指针,只知道引用,即使这样,你也只能更改对象的内部成员,而不是对象本身。就像将对象参数设置为 null 不会影响作为参数提供给函数的对象一样

答:

1赞 steveross 11/4/2023 #1

使用 C/C++,您可以通过将地址传递给函数或使用函数内部的引用来更改值。 但是,你不能通过传递自身来更改值,尽管在 C 中。 它类似于 Javascript。 如果你发送对象,而不是变量,也许你可以改变它。但不是标量变量。

let g_name = { name: "Jean-Luc" };

function change(str) {
    str.name = "Wesley";
}

change(g_name);
console.log(g_name);