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

时间: 2024-08-07 08:39:49

关于js中立即执行的匿名函数写法的相关文章

javascript--函数的声明及调用/JS中代码执行顺序

[函数的声明及调用] 1.函数声明格式: function 函数名(参数1,参数2,参数3--){ //函数体 return 结果: } 函数调用的格式: 函数名(参数1的值,参数2的值,--): 事件调用:事件名=函数名(): 2.函数声明的几点强调: ① 函数的声明,必须符合小驼峰法则(首字母小写,之后每个单词首字母大写): ② 参数的列表,可以有参数,可以无参数.分别称为有参函数,无参函数: ③ 声明函数时的参数列表,称为"形参列表"(变量的名): 调用函数时的参数列表,称为&q

JavaScript中的闭包与匿名函数

知识内容: 1.预备知识 - 函数表达式 2.匿名函数 3.闭包 一.函数表达式 1.定义函数的两种方式 函数声明: 1 function func(arg0, arg1, arg2){ 2 // 函数体 3 } 函数表达式: 1 var func = function (arg0, arg1, arg2){ 2 // 函数体 3 } 2.注意事项 函数表达式使用前必须赋值!像下面的代码是错误的: 1 say() 2 var say = function(){ 3 console.log("12

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

在js中的执行上下文,菜鸟入门基础 这篇文章中我们简单的讲解了js中的上下文,今天我们就更进一步的讲解js中的执行上下文. 1.当遇到变量名和函数名相同的问题. var a = 10; function a(){ console.log(1); } a(); //报错 如果你觉得函数a会覆盖变量a那你肯定是js的新朋友,为什么这里会报错呢?我记得我在基础的执行上下文文章中说过变量声明提前的概念,对这里就是因为这个原因,但是在上面一篇文章中还有一个问题我没有去讲. 那就是函数的声明比变量的声明顺序

JS中的日期内置函数

用JS中的日期内置函数实现在页面显示:“今天是:2013年9月26日14:32:45”. var date=new Date(Date.parse('9/26/2013 14:32:45'));   写出JS中声明对象的三种方法. Var obj={ name:名字, Say:function(){ Alert(‘sssss’); } }     Var obj=new Object();     Var obj={} Obj.name=’名字’; Obj.say=function(){ Ale

立即执行的匿名函数

(function($){ ... })(jQuery)是一个“立即执行的匿名函数”,构成了一个闭包,可以防止命名冲突.在匿名函数内部,$参数引用jQuery对象.这个匿名函数不会等到DOM就绪就会执行.注意,使用这个hack时,脚本必须是在页面的head元素中链接和(或)执行的.之所以选择这个时机,因为这时候刚好document元素可用,而整个DOM还远未生成:如果把脚本放在结束的body标签前面,就没有意义了,因为那时候DOM已经完全可用了. 转自:http://www.cnblogs.co

JS中,子类调用超类函数

概述 JS虽然并不直接具备面向对象的特性,但仍可以通过prototype来模拟面向对象的继承和多态等特性.和大多数面向对象语言(例如C++,Java等)相比,JS来实现面向对象仍稍显繁琐和抽象,需要对JS的prototype模型有深入的理解. 在开发过程中,有时候会遇到这样一个问题:如果在子类中"覆盖"了超类的某个方法,但仍需要在子类方法中调用一次超类方法,这时候应该怎么做?如果是Java,一个简单的super关键字即可解决问题,但如果是JS呢? 解决问题的最基本方法可以是:在子类中,

PHP中的闭包和匿名函数

PHP中的闭包和匿名函数 闭包是指在创建时封装周围状态的函数.即使闭包所在的环境不存在了,闭包中封装的状态依然存在. 匿名函数就是没有名称的函数.匿名函数可以赋值给变量,还能像其他任何PHP对象那样传递.不过匿名函数仍是函数,因此可以调用,还可以传入参数.匿名函数特别适合作为函数或方法的回调. 注意:理论上讲,闭包和匿名函数是不同的概念.不过,PHP将其视作相同的概念.所以,我们提到闭包时,指的也是匿名函数,反之亦然. PHP闭包和匿名函数使用的句法与普通函数相同,但闭包和匿名函数其实是伪装成函

js中的执行环境及作用域

最近在面试时被问到了对作用域链的理解,感觉当时回答的不是很好,今天就来说说js中的作用域链吧. 首先来说说js中的执行环境,所谓执行环境(有时也称环境)它是JavaScript中最为重要的一个概念.执行环境定义了变量或函数有权访问的其他数据 ,决定了它们各自的行为.而每个执行环境都有一个与之相关的变量对象,环境中定义的所有变量和函数都保存在这个对象中. 理解了执行环境,现在就看看什么是作用域链吧.每个函数都有自己的执行环境,当代码在执行环境中执行时,就会创建变量对象的作用域链.作用域链保证了对执

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

PHP闭包和匿名函数使用的句法与普通函数相同,但闭包和匿名函数其实是伪装成函数的对象(Closure类的实例) .下面给大家介绍PHP中的闭包和匿名函数知识,需要的朋友参考下吧 闭包是指在创建时封装周围状态的函数.即使闭包所在的环境不存在了,闭包中封装的状态依然存在. 匿名函数就是没有名称的函数.匿名函数可以赋值给变量,还能像其他任何PHP对象那样传递.不过匿名函数仍是函数,因此可以调用,还可以传入参数.匿名函数特别适合作为函数或方法的回调. 注意:理论上讲,闭包和匿名函数是不同的概念.不过,P