首页 > 代码库 > 关于js中立即执行的匿名函数写法
关于js中立即执行的匿名函数写法
1 /*最流行的写法*/ 2 (function() { 3 alert("run!") 4 })(); 5 6 /* !号可以有1~正无穷个,所以这一种就可以衍生无数种方式 */ 7 !!!(function() { 8 alert("run!") 9 })();10 11 (function() {12 alert("run!")13 }).call();14 15 (function() {16 alert("run!")17 }).apply();18 19 (function() {20 alert("run!")21 }());22 23 void(function() {24 alert("run!")25 })();26 27 ~(function() {28 alert("run!")29 })();30 31 ~!(function() {32 alert("run!")33 })();34 35 /* 这个最好玩 */36 delete(function() {37 alert("run!")38 })();39 40 + (function() {41 alert("run!")42 })();43 44 - (function() {45 alert("run!")46 })();47 48 setTimeout(function() {49 alert("run");50 }, 0);51 52 /*自由变态组合,可以衍生出无数种方式*/53 ~+-!(function() {54 alert("run!")55 })();
上面是直接扣别人整理的 ,所有的方式都将匿名函数用小括号给包起来调用; 而我在学习bootstrap.js 里边的插件写法时候遇到却不用 如下
1 // 1. 定义立即调用的函数2 +function($){3 "use strict"; //使用严格模式ES5支持4 //后续步骤5 // 2. xx 插件类及原型方法的定义 6 // 3. 在jQuery上定义xx插件,并重设插件构造器7 // 4. 防冲突处理8 // 5. 绑定触发事件9 }(window.jQuery)
今天有些了一个倒计时跳转的js时, 还是以为直接 function(){}() 这样就可以调用了,结果试了半天都不可以; 最后还是用最正统的 (function(){})() 写法才成功;
接着尝试发现 bootstrap那种写法只有前面符号是 ~!+- 这几个才能成功(也就是上面 最后一种写法), 难道是通过运算符执行后面的语句?
顺便贴上代码
var countdown=10; var $btnBack=document.getElementById("btnBack"); +function (){ if(countdown>0) { $btnBack.innerHTML=countdown+" seconds left"; setTimeout(arguments.callee,1000); countdown--; } else { alert("over"); } }();
结论:如果不将匿名函数用小括号包起来 前面就必须加上 ~!+- 中的一个或多个或组合。。。
~function(){}()
!function(){}()
+function(){}()
-function(){}()
关于js中立即执行的匿名函数写法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。