gpt4 book ai didi

javascript - IFFE 与返回函数的函数

转载 作者:行者123 更新时间:2023-11-29 18:12:03 25 4
gpt4 key购买 nike

考虑以下几点:

var x = (function(){
var _private = 'start';
var _x = function(text){
if(text){
_private = text;
}
else{
return _private;
}
}
return _x;
})();

console.log(x()); //start
x('end');
console.log(x()); //end

var y = function(){
var _private = 'start';
var _y = function(text){
if(text){
_private = text;
}
else{
return _private;
}
}
return _y;
}
console.log(y()); //toString of function
y();//invoked function, should return _y?
y('end')
console.log(y()); //toString of function

我需要弄清楚为什么 y 函数在被调用后与 x 函数的行为不同。为什么 y 函数的行为不同,我没有得到关于 IFFE 的什么总体概念?

fiddle :http://jsfiddle.net/xmmddcgn/

最佳答案

在第一个例子中:

var x = (function(){
var _private = 'start';
var _x = function(text){
if(text){
_private = text;
}
else{
return _private;
}
}
return _x;
})();

var xinner function 因为调用了 outer function .

在第二个示例中,var y 是外部函数,在您像这样调用它之后:

var y = function () {
var _private = 'start';
var _y = function (text) {
if (text) {
_private = text;
} else {
return _private;
}
}
return _y;
}

y(); // nothing happens and nobody keep _y's ref.
var p = y(); //p is _y

console.log(p()); //start
p('end')
console.log(p()); //end

那么 p 就是上面的 var x

关于javascript - IFFE 与返回函数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26529511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com