博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于js中立即执行的匿名函数写法
阅读量:4613 次
发布时间:2019-06-09

本文共 1759 字,大约阅读时间需要 5 分钟。

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

转载于:https://www.cnblogs.com/mushishi/p/4113622.html

你可能感兴趣的文章
SQL Server 2008的备份和日志收缩
查看>>
sqlserver数据库数据字典生成器
查看>>
iOS经典面试题 (一)
查看>>
Linux : 从私钥中提取公钥
查看>>
Quartz.Net分布式任务管理平台
查看>>
android 应用分发
查看>>
58同城2018提前批前端笔试题总结
查看>>
compilation与编译
查看>>
useradd mfs -s /sbin/nologin -M
查看>>
mysql数据库:数据类型、存储引擎、约束、
查看>>
LeetCode-Find the Celebrity
查看>>
LeetCode-Longest Increasing Subsequence
查看>>
LeetCode-Reverse Bits
查看>>
zynq如何查看当前网速
查看>>
vue+element-ui实现表格checkbox单选
查看>>
linux公司常用基础命令必知必会
查看>>
java-泛型
查看>>
网站优化
查看>>
Java高级特性 第5节 序列化和、反射机制
查看>>
gcc 头文件依赖关系 分析工具
查看>>