function f(arg){
var n =function(){
return arg;
}
arg++;
return n;}var m= f(123);
l=m();
document.write(l)();//124为什么上面的值不是 123 呢?下面的值是 124 ,我能理解。arg++ 是先取值后加 1 ;++arg 是先加 1 后取值。function f(arg){
var n =function(){
return arg;
}
++arg;
return n;}var m= f(123);
l=m();
document.write(l)();//124
var n =function(){
return arg;
}
arg++;
return n;}var m= f(123);
l=m();
document.write(l)();//124为什么上面的值不是 123 呢?下面的值是 124 ,我能理解。arg++ 是先取值后加 1 ;++arg 是先加 1 后取值。function f(arg){
var n =function(){
return arg;
}
++arg;
return n;}var m= f(123);
l=m();
document.write(l)();//124
以上是在判断时候
例如
for(i=1;i<=10;i++)运行10次
和for(i=1;i<=10;++i)
运行9次
return n;
本身不是一步操作
function f(arg) {
var x = arg;
var n = function(){
return x;
};
arg++;
return n;
} var m = f(123);
l = m();
alert(l);//124
var n =function(){
return arg;
}
arg++;
return n; } var m= f(123);
l=m();
document.write(l)();//124
return n;
这样测试一下楼主就明白了。
arg++;
alert(arg);
return n;
alert(arg);
return n;
有个小疑问:
楼主运行时
document.write(l)();这里的括号没有问题吗?
如果独立成句,效果是一样的。楼主概念不清!
var x = arg;// arg 的值 123 复制到 变量 x 中
var n = function(){
return x;
};
arg++; //arg 的 值 加 1 后,并不影响原来的 x 的值
return n;
}
var m = f(123);
l = m();
alert(l);//123 非124
-----------------------
function f(arg){
var n =function(){
return arg;
}
arg++; // arg 值加 1 ,引起 n 的值的变化
return n; } var m= f(123);
l=m();
document.write(l)();//124 变量的基本类型和引用类型之间的差别,在第一段代码中得到了体现。
function f(arg) {
var x = arg;// arg 的值 123 复制到 变量 x 中
var n = function(){
return x;
};
arg++; //arg 的 值 加 1 后,并不影响原来的 x 的值
return n;
}
var m = f(123);
l = m();
alert(l);//123 非124
-----------------------
function f(arg){
var n =function(){
return arg;
}
arg++; // arg 值加 1 ,引起 n 的值的变化
return n; } var m= f(123);
l=m();
document.write(l)();//124
第二个函数,n返回的是arg,其父函数的arg的最终值是124
还是去理解一下闭包吧...