JavaScript初学者在这里。我试图理解以下两个示例之间的区别以及它们为什么呈现不同的结果。任何帮助将非常感激!谢谢!
示例1
var age = 30;
function changeAge(a) {
a = 20;
}
changeAge(age);
console.log(age); // ------ output = 30
示例2
var age = 30;
function changeAge() {
age = 20;
}
changeAge();
console.log(age); // ------ output = 20
答案 0 :(得分:1)
两个示例的不同之处在于:
在第一个示例中,您更新a
,它是函数执行结束时丢失的局部变量。
在第二个示例中,您更新age
,这是一个全局变量,所有人都可以访问。
这些示例的精髓在于说明,在JavaScript中,您只能按值传递变量,而不能像其他语言那样通过引用传递变量。
要使第一个示例在功能上与第二个示例相同,您需要返回a
并将函数结果分配给age
:
var age = 30;
function changeAge(a) {
a = 20;
return a; // or simply return 20;
}
age = changeAge(age);
console.log(age); // ------ output = 20
答案 1 :(得分:0)