gpt4 book ai didi

javascript - 为什么这个函数没有重新分配变量?

转载 作者:行者123 更新时间:2023-12-03 10:19:49 24 4
gpt4 key购买 nike

我正在做一个简单的 JavaScript 问题,我必须通过函数传递一个数组,并为该数组重新分配一个不同的值。为什么当我传递一个数组(甚至任何变量)时,我必须专门重新分配该数组才能更改它?我不能只使用函数中的代码来使用参数来为我做到这一点吗?这是我的代码:

<script>
var str = 'this is my sentence';
//Write a function called reverse that takes is given str as it's only argument and returns that string after it's been reversed

function reverse(x) {
x = x.split('').reverse().join('');
return x;
}

//returns with the text reversed, but str is still 'this is my sentence' and not the reversed version
</script>

最佳答案

您必须实际调用反向函数。一旦添加 str = reverse(str);

,您的代码就可以工作
<script>
var str = 'this is my sentence';
//Write a function called reverse that takes is given str as it's only argument and returns that string after it's been reversed

function reverse(x) {
x = x.split('').reverse().join('');
return x;
}

str = reverse(str); //Call the function

window.alert(str); //show an alert box to view reversed string

</script>

编辑

他的问题似乎是[为什么]我必须专门重新分配数组才能改变它?

参数是一个原语,对于原语,javascript 按值传递。这意味着被调用函数的参数将是调用者传递的参数的副本。这不是同一个项目。

另一种方法是按引用传递,在这种情况下,被调用函数的参数将与调用者传递的参数是同一对象。在这种情况下,函数内部对作为参数传递的对象发生的更改将在函数外部“可用” - 因为它是同一个对象。这就是 Javascript 传递对象的方式。

在 Javascript 中,字符串可以是对象也可以是基元,具体取决于创建它的方式:

var str = "I'm a String Primitive";//这是一个基元

var str = new String("我是一个字符串对象");//这是一个对象

关于javascript - 为什么这个函数没有重新分配变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29690943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com