慕工程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); //實(shí)際上下面這個(gè)也是對(duì)的。這是為什么???為什么這里不用閉包? window[fun_item[i]] = function(obj){ return new RegExp(Regitem[i],'g').test(obj); } }}goFunc();
1 回答

躍然一笑
TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
我嘗試了下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在使用時(shí)候就已經(jīng)為4了,在Regitem內(nèi)是獲取不到值的。
添加回答
舉報(bào)
0/150
提交
取消