为何 第一个console.log的输出是abc啊?
let data = "abc";
fun(data);
console.log(data);
function fun(data) {
// console.log("data", data);
// console.log("arg", arguments);
data += "xyz";
// console.log("data1", data);
}
// console.log(data);
因为函数参数是基于值传递的,所以在函数外部data参数的值不会受到函数内部的改变,所以第一个console.log的输出仍然是"abc"。
该回答引用ChatGPT
在这段代码中,第一个console.log输出的是"abc",因为在调用fun函数之前,data被赋值为"abc"。然后,fun函数被调用,它的参数是data,也就是"abc"。在fun函数内部,将data与字符串"xyz"连接起来,产生一个新的字符串"abcxyz"。然而,这并没有改变原始的data变量,因为在JavaScript中,字符串是不可变的。因此,当fun函数执行完毕后,data仍然是"abc"。所以,当第二个console.log被调用时,输出的值仍然是"abc"。
不知道你这个问题是否已经解决, 如果还没有解决的话: