zoukankan      html  css  js  c++  java
  • 如何定义立即执行函数?【转】

    2016-05-12 23:25 1773人阅读 
    如何定义立即执行函数?【转】 分类:

    此文出自 http://q.cnblogs.com/q/52920/

    感谢原创作者和转载者,感谢提问人和解答人。


    !function(){}();   !有什么用?

    从语法上来开,JavaScript中分号表示语句结束,在开头加上,可能是为了压缩的时候和别的方法分割一下,表示一个新的语句开始。所以,如果在一个单独的JS文件中,开头的分号是没有任何意义的,可以删掉。

    叹号是逻辑运算符,是“非”的意思,常见这种写法 if(!true){};而将运算符加载函数定义的前面,则是将函数看做一个整体,然后再调用这个函数,并对返回的结构进行逻辑运算。

    说白了,此处就是构建了一个立即执行函数,建议楼主知道意思就可以,自己写的时候,可以使用更清晰的格式:

    (function(){})();


    楼上已经给出很详细的解说了。

    这里补充一点:在函数声明【 function (){} 】后面加【 () 】,意思是执行这个函数声明。有的叫法是“匿名自动执行函数”,更准确的表示应该为“立即执行函数”。

     

    但立即执行函数,要作为表达式的一部分才行,不然js解释器会报语法错误。一般,成为表达式的最容易理解方式是:在左右两端加一个圆括号,像这样【 (function (){}) 】。所以,立即执行函数最常见的写法是【 (function (){})() 】,这是一个语句,在前面和后面都可以加【 ; 】。

     

    其实立即执行函数还有N种写法,比如【 (function (){}) 】也行,在函数声明前加一元运算符也行:【 !function (){}() 】、【 ~function (){}() 】。甚至,对一元运算符进行组合也可以:【 !!!!function (){}() 】、【 ~~~function (){}() 】、【 !~!function (){}() 】。

  • 相关阅读:
    一次数据库的整理的sql语句
    网页交互及xml的一些属性对程序的影响
    google编程挑战赛Round1的前两道题
    修改Windows帐户密码,导致Sql Server 2000无法启动。
    在虚拟主机中无法实现缩放等交互
    动态控件创建的一些经验
    文章
    如何解决 SQL Server 2000 中的连接问题
    待看
    I帧,P帧,B帧简介
  • 原文地址:https://www.cnblogs.com/jinhengyu/p/7516816.html
Copyright © 2011-2022 走看看