如题,我不理解的是为什么非要把jQuery当参数传给匿名函数,因为把$形参和jQuery实参都去掉,代码运行一点问题都没有?还是说这么做有什么特殊的含义?
<body>
<div class="left"></div>
<div class="right">heelsj</div>
</body>
<script src="jquery-3.1.0.js"></script>
<script>
var fn = function(){
return (function($){
console.log($('.right').html());
})(jQuery)
}();
</script>
-
首先函数会构建作用域,把jQuery传进去,可以减少作用域查找。
如果不把jQuery当参数传递,则你使用变量
jQuery/$
的时候,首先会在函数体内查找,然后进fn
查找,最后到window下查找。而你把jQuery传进去之后,则只需要在函数体内查找
$
即可。
如果以后依赖的是
Zepto/jqlite
,你只需要改下参数就行了,在这种极端的情况下,降低了代码修改和可复用成本。
提高js执行速度吧。
据说使用全局变量会比局部变量/函数参数稍微慢一丢丢~