/*最流行的写法*/
(function() {
alert("run!")
})(); /* !号可以有1~正无穷个,所以这一种就可以衍生无数种方式 */
!!!(function() {
alert("run!")
})(); (function() {
alert("run!")
}).call(); (function() {
alert("run!")
}).apply(); (function() {
alert("run!")
}()); void(function() {
alert("run!")
})(); ~(function() {
alert("run!")
})(); ~!(function() {
alert("run!")
})(); /* 这个最好玩 */
delete(function() {
alert("run!")
})(); + (function() {
alert("run!")
})(); - (function() {
alert("run!")
})(); setTimeout(function() {
alert("run");
}, 0); /*自由变态组合,可以衍生出无数种方式*/
~+-!(function() {
alert("run!")
})();

上面是直接扣别人整理的 ,所有的方式都将匿名函数用小括号给包起来调用;  而我在学习bootstrap.js 里边的插件写法时候遇到却不用 如下

 // 1. 定义立即调用的函数
+function($){
"use strict"; //使用严格模式ES5支持
//后续步骤
// 2. xx 插件类及原型方法的定义
// 3. 在jQuery上定义xx插件,并重设插件构造器
// 4. 防冲突处理
// 5. 绑定触发事件
}(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中立即执行的匿名函数写法的更多相关文章

  1. js闭包中的this(匿名函数中的this指向的是windows)

    js闭包中的this(匿名函数中的this指向的是windows) 一.总结 1.普通函数中的this指向的是对象,匿名函数中的this指向的是windows,和全局变量一样 2.让匿名函数中的thi ...

  2. JavaScript中的闭包与匿名函数

    知识内容: 1.预备知识 - 函数表达式 2.匿名函数 3.闭包 一.函数表达式 1.定义函数的两种方式 函数声明: 1 function func(arg0, arg1, arg2){ 2 // 函 ...

  3. 进阶学习js中的执行上下文

    在js中的执行上下文,菜鸟入门基础 这篇文章中我们简单的讲解了js中的上下文,今天我们就更进一步的讲解js中的执行上下文. 1.当遇到变量名和函数名相同的问题. var a = 10; functio ...

  4. 浅析PHP中的闭包和匿名函数

    PHP闭包和匿名函数使用的句法与普通函数相同,但闭包和匿名函数其实是伪装成函数的对象(Closure类的实例) .下面给大家介绍PHP中的闭包和匿名函数知识,需要的朋友参考下吧   闭包是指在创建时封 ...

  5. js中的执行环境及作用域

    最近在面试时被问到了对作用域链的理解,感觉当时回答的不是很好,今天就来说说js中的作用域链吧. 首先来说说js中的执行环境,所谓执行环境(有时也称环境)它是JavaScript中最为重要的一个概念.执 ...

  6. JS中的日期内置函数

    用JS中的日期内置函数实现在页面显示:“今天是:2013年9月26日14:32:45”. var date=new Date(Date.parse('9/26/2013 14:32:45'));   ...

  7. 有趣的js匿名函数写法(function嵌套)

    例子没有什么实际意义,只能做为思路参考 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&quo ...

  8. js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快、简单 post:安全,量大,不缓存)(服务器同步和异步区别:同步:等待服务器响应当中浏览器不能做别的事情)(ajax和jquery一起用的)

    js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快.简单 post:安全,量大,不缓存)( ...

  9. JS中立即执行函数的理解

    1.匿名函数不能单独定义,必须进行赋值操作或者立即执行,否则会被JS引擎定义为语法错误 function(){alert(dada);} VM229:1 Uncaught SyntaxError: U ...

随机推荐

  1. IOS插件管理器: alcatraz

    官网 http://alcatraz.io/ 推荐几个应用,均可以由alcatraz来进行安装: 1. 格式化 clangformat. 插入自定义的格式化文件:https://raw.githubu ...

  2. (整理)RPC

    今天研究了一下Webservice,然后就查到RPC,看到CSDN上有两篇很好的文章,就学习一下,并记录在此以便后续研究 http://blog.csdn.net/mindfloating/artic ...

  3. Esfog_UnityShader教程_漫反射DiffuseReflection

    这篇是系列教程的第三篇,最近工作比较紧,所以这个周六周日就自觉去加了刚回来就打开电脑补上这篇,这个系列的教程我会尽量至少保证一周写一篇的.如果大家看过我的上一篇教程<Esfog_UnitySha ...

  4. NoCache

    <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Ca ...

  5. windows server 2008 IP安全策略关闭端口,禁止ping,修改远程连接3389端口,开放指定端口

    windows server 2008 IP安全策略关闭端口:      Tomcat服务访问不了情况解决.    Windows默认情况下有很多端口是开放的,在你上网的时候,网络病毒和黑客可以通过这 ...

  6. 008 The Generics In JAVA

    泛型是JAVA的核心特型之一,我们先看一个例子: 没有使用泛型前,如下: import java.util.ArrayList; import java.util.List; public class ...

  7. python 2.7.10 找不到 libmysqlclient.18.dylib 解决方案

    Mac os x 升级到最新版后出现 python MysqlDB 无法找到 libmysqlclient.18.dylib 的问题,尝试的解决方案如下: 1.  升级更新 mysql 到最新版,无效 ...

  8. Cesium简介

    一.Cesium介绍 Cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎.Cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区域,并提供良好的触摸支持 ...

  9. 来自Google产品管理和营销高级副总裁Jonathan Rosenberg的42条军规(转)

    #35 营造一个说 yes 的文化 你想要建立一个充满正能量和积极思考的地方.“组织里有阻碍变革发生的抗体.所以许多大公司无法创新.如果你是一个创新者,你就变成了病毒,所有的抗体都想杀死你.”在这种情 ...

  10. ajax 跳入error的一些原因

    先放一个标准的jquery的ajax代码: $.ajax({ type: 'POST', url: 'getSecondClassification', data: {"sort2" ...