我知道有自行执行的匿名函数,例如:
// Get the year
var year = d.getFullYear();
// Get the month +1 because normally returns 0-11
var month = d.getMonth()+1;
// Format month to add a 0 if 1-9
var fMonth = month < 9 ? '0' + month : month;
// Get day and format it to add a 0 if 1-9
var fDay = d.getDate() < 9 ? '0' + d.getDate() : d.getDate();
// Combine it into a single string
var dateStr = year +'-'+ fMonth +'-'+ fDay +'T';
我已经看到了带闭包的另一个版本。
var func = function(){
return 'hello';
}();
据我所测试,两种语法都提供相同的结果并且具有相似的行为。具有闭包的目的是什么?提前谢谢。
答案 0 :(得分:2)
让我们举个例子并稍加修改。
var func = (function(){
//here are some local variables
var demo = 'hello'
return function(){
return demo;
}
}());
func() // outputs "hello"
这里执行函数并创建其局部变量'demo',其值为'hello'并返回一个函数。在函数执行后的java脚本中,所有局部变量都是销毁或垃圾收集。但在这种特殊情况下,返回的匿名函数仍然访问到这个变量'demo'。这个特殊的访问叫做 closure 。