深入淺析JavaScript函數(shù)前面的加號和嘆號

字號:


    這篇文章主要介紹了深入淺析JavaScript函數(shù)前面的加號和嘆號的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    +function(){}();
    這里的加號,也可以替換成!,~等其他一元操作符,其效果相當于:
    (function() { console.log("Foo!"); })();
    // or
    (function() { console.log("Foo!"); }());
    如果沒有這個加號的話,解析器會認為function是一個函數(shù)聲明的開始,而后面()將會導致語法錯誤。在function前面加上+號時,就變成了一個函數(shù)表達式,而函數(shù)表達式后面又添加了一個()就變成了一個立即執(zhí)行的函數(shù)了。
    下面看下js函數(shù)前面感嘆號的作用:
    一、JS函數(shù)聲明形式
    function fnA(){alert('msg');} //聲明式定義函數(shù)
    二、JS函數(shù)表達式形式
    var func = function(agr1,arg2){ //創(chuàng)建匿名函數(shù)
    alert(arg1 + ' ' + arg2);
    }
    三、JS匿名函數(shù)聲明完立即執(zhí)行的常見格式
    (function() { /* code */ })();
    說明:
    1、包圍函數(shù)(function(){})的第一對括號向腳本返回未命名的函數(shù),隨后一對空括號立即執(zhí)行返回的未命名函數(shù),括號內(nèi)為匿名函數(shù)的參數(shù)。
    2、使用括號包裹定義函數(shù)體,解析器將會以函數(shù)表達式的方式去調(diào)用定義函數(shù)。也就是說,任何能將函數(shù)變成一個函數(shù)表達式的作法,都可以使解析器正確的調(diào)用定義函數(shù)。而 ! 就是其中一個,而 + - || 都有這樣的功能。
    3、該函數(shù)的作用主要為 匿名 和 自動執(zhí)行