函数 进阶学习之一:JS中(function(){xxx})(); 这种写法引发的血案!!
一问题的由来:
见过一段代码
for(var i=0;i<submit.length;i++){ (function (i) {//注意 submit.eq(i).on("click",function (e) { var title_id = $(".qk-title").eq(i).attr('id'); var answer_cont = $(".checkbox").eq(i).children(".cur").html(); if(!answer_cont){ alert("选择项不能为空!"); }else{ internalVoteSubmit(title_id,answer_cont); if(bfSubmit){ $('.submit').eq(i).fadeOut(); } e.preventDefault(); swiperParent.swipeNext(); } }) })(i)//注意 }
代码中用(function(){})()包裹了一段代码,联想到各种jquery插件也用到这种格式(比如 weui的js),虽然自己在仿写插件的时候也用这种方式!并未做深入的学习起原理,
这次就将深入学习。
首先进入视野的是 自执行匿名函数
通过自执行匿名函数,有认识到其他的几个内容
1.IIFE 的原理
2.函数和函数表达式的区别(之前未引起重视)
3.其声明提升至当前作用域的顶部