闭包是:
只想确认以下是否考虑闭包?
1)在函数中绑定javascript函数。
var Books = {
init:function(){
$('#box').bind('click',function(){
console.log('click');
});
}
};
Books.init();2)在函数中声明函数
function sayHello(name) {
var text = 'Hello ' + name;
var sayAlert = function() { alert(text); }
}
var hello = sayHello();在某些时候,我仍然不能区分哪些是闭包,就是函数中的所有函数都考虑闭包,或者只考虑将返回的内部函数作为变量/引用。示例:
function sayHello(name) {
var text = 'Hello ' + name;
var sayAlert = function() { alert(text); }
**return sayAlert;**
}发布于 2012-07-13 09:00:57
1不是因为没有实际引用变量,而是2和3。
在2和3中,名为text的变量在其词法范围外被关闭引用。在1里什么都不是。
关于闭包的crockford:
这意味着,即使在外部函数返回之后,内部函数始终可以访问外部函数的vars和参数。
发布于 2012-07-13 09:01:46
所有这些都是封闭的。
我不知道你的困惑是什么。
https://stackoverflow.com/questions/11467262
复制相似问题