Javascript IFFE与返回函数的函数
考虑以下几点:Javascript IFFE与返回函数的函数,javascript,Javascript,考虑以下几点: var x = (function(){ var _private = 'start'; var _x = function(text){ if(text){ _private = text; } else{ return _private; } } return _x; })(); console.log(x()); //start
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函数的行为不同,我没有得到关于iff的什么总体概念
小提琴:在第一个例子中:
var x = (function(){
var _private = 'start';
var _x = function(text){
if(text){
_private = text;
}
else{
return _private;
}
}
return _x;
})();
var x是自调用外部函数以来的内部函数
在第二个示例中,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。啊,这现在是有意义的。我没有想过需要将y赋给一个变量,然后该变量将执行我想要的操作+1.