两个函数对象:
// toplevel
var f1 = function(){return k;};
var f2 = (function(k){return function(){return k;}})(42);
具有相同的源代码“function(){return k;}”,但它是在全局环境中查找f1
的函数,而是捕获本地.k
f2
k
是否可以判断f2
是闭包?typeof
因为两者都有"function"
帮助,也无济于事......
例如,将函数的源代码存储在数据库中可能是有意义的,因为您可以使用eval
. 由于捕获的变量,存储闭包的源代码是行不通的。