在比较正常函数和立即函数时,我对范围感到困惑.这是一个例子:
var num=5;
var x=3;
doubleNum = function(){
num = num*x
x++;
return num;
};
console.log(doubleNum());//15
console.log(doubleNum());//60
console.log(doubleNum());//300
Run Code Online (Sandbox Code Playgroud)
这是一个普通函数,num和x是全局定义的,可由doubleNum访问,因此更新了num和x.
var num=5;
var x=3;
doubleNum = function(){
num = num*x
x++;
return num;
}();
console.log(doubleNum);//15
console.log(doubleNum);//15
console.log(doubleNum);//15
Run Code Online (Sandbox Code Playgroud)
但是,如果我定义一个立即函数并以同样的方式调用它,我得到了不同的答案.即使我希望有相同的输出我错过了必要的东西吗?或者我理解了一些错误的概念?请帮忙.提前致谢. 的jsfiddle