var num = 1;
function add(){
num = 2;
}
function con(){
add();
console.log(num);
}
con() //很明显输出的是2
var num = 1;
function add(num){
num = 2;
}
function con(){
add(num);
console.log(num);
}
con() //输出的居然是1
function add(num){
num = 2;
}
function con(){
var num = 1;
add(num);
console.log(num);
}
con() //输出的是1
同理,我使用一个对象
var test = {
num: 1,
add:function(num){
num ++;
},
console:function () {
this.add(this.num)
console.log(this.num);
}
}
test.console() //输出的是1
var test = {
num: 1,
add:function(){
this.num ++;
},
console:function () {
this.add()
console.log(this.num);
}
}
test.console() //输出的是2
var test = {
add:function(num){
num ++;
console.log(num);
},
console:function () {
var num = 1;
this.add(num)
console.log(num);
}
}
test.console() //输出的是1
不管是对象还是函数,其实都是一样的
这里就出现一个神奇的现象,参数不能乱用,这里就可以和
此题已解,就是参数的问题,function add(num) === function add(var num=num)
本文深入探讨JavaScript中函数参数与局部变量的作用域问题,通过对比不同情况下参数与变量的赋值效果,揭示参数传递机制及变量作用域规则。
1466

被折叠的 条评论
为什么被折叠?



