匿名函数自执行

   在看bootStrap插件的时候发现这种写法函数

 !function(){}这种写法,不解,后来看到网上的文章才知道,这是匿名函数的一种写法spa

 

    1. 什么是自执行的匿名函数?
    它是指形如这样的函数: (function {// code})();

    2. 疑问
    为何(function {// code})();能够被执行, 而function {// code}();却会报错?

    3. 分析
    (1). 首先, 要清楚二者的区别:
    (function {// code})是表达式, function {// code}是函数声明.
    (2). 其次, js"预编译"的特色:
    js在"预编译"阶段, 会解释函数声明, 但却会忽略表式.
    (3). 当js执行到function() {//code}();时, 因为function() {//code}在"预编译"阶段已经被解释过, js会跳过function(){//code}, 试图去执行();, 故会报错;
    当js执行到(function {// code})();时, 因为(function {// code})是表达式, js会去对它求解获得返回值, 因为返回值是一 个函数, 故而遇到();时, 便会被执行.插件

   另外, 函数转换为表达式的方法并不必定要靠分组操做符(),咱们还能够用void操做符,~操做符,!操做符……code

如:string

! function (){  
   alert( "另类的匿名函数自执行" );   
}();
相关文章
相关标签/搜索