为了账号安全,请及时绑定邮箱和手机立即绑定

父函数内部批量构建子函数,子函数函数名称与子函数内部都有变量的闭包问题?

父函数内部批量构建子函数,子函数函数名称与子函数内部都有变量的闭包问题?

慕工程0101907 2019-02-09 23:23:00
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();
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

我尝试了下lz的代码,下面的不使用闭包的代码并不能使用。

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(obj){

            return new RegExp(Regitem[i],'g').test(obj);

        }    

    }

}

goFunc();

这里的i在使用时候就已经为4了,在Regitem内是获取不到值的。

查看完整回答
反对 回复 2019-02-12
  • 1 回答
  • 0 关注
  • 440 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信