父函数内部批量构建子函数,子函数函数名称与子函数内部都有变量的闭包问题?
var Regitem = ['\\d','[\\u4E00-\\u9FA5]','[a-z]','[A-Z]'];
var fun_item = ['obj_isNumber','obj_isChar','obj_isSmall','obj_isLarge'];
function goFunc(){
for(var i = 0 ; i < fun_item.length ; i++){
window[fun_item[i]] = (function(i){
return function(obj){
return new RegExp(Regitem[i],'g').test(obj);
}
})(i);
//实际上下面这个也是对的。这是为什么啊?为什么这里不用闭包?
window[fun_item[i]] = function(obj){
return new RegExp(Regitem[i],'g').test(obj);
}
}
}
goFunc();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我尝试了下lz的代码,下面的不使用闭包的代码并不能使用。
这里的i在使用时候就已经为4了,在Regitem内是获取不到值的。