我正在做一个简单的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>
答案 0 :(得分:1)
你必须实际调用反向函数。添加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>
修改强>
他的问题似乎是[Why do] I have to specifically reassign the array in order for it to change?
。
参数是基元,有原语,javascript 按值传递。这意味着被调用函数的参数将是调用者传递的参数的副本。它不是同一个项目。
替代方案是按引用传递,在这种情况下,被调用函数的参数将与调用方传递的参数相同。在这种情况下,作为参数传递的对象函数内部发生的更改将在函数外部“可用” - 因为它是同一个对象。这就是Javascript传递对象的方式。
在Javascript中,字符串可以是对象或基元,具体取决于您创建它的方式:
var str = "I'm a String primitive";
//这是一个原始的
var str = new String("I'm a String object");
//这是一个对象