avascript中的自執行匿名函數,avascript匿名函數

來源:互聯網
上載者:User

avascript中的自執行匿名函數,avascript匿名函數
Javascript中的自執行匿名函數
格式:

(function(){//代碼})();
解釋:這是相當優雅的代碼(如果你首次看見可能會一頭霧水:)),包圍函數(function(){})的第一對括弧向指令碼返回未命名的函數,隨後一對空括弧立即執行返回的未命名函數,括弧內為匿名函數的參數。
來個帶參數的例子:
(function(arg){alert(arg+100);})(20);// 這個例子返回120。

重要用途:可以用它建立命名空間,只要把自己所有的代碼都寫在這個特殊的函數封裝內,那麼外部就不能訪問,除非你允許

(function(){   function $(id){return document.getElementById(id);   }   function __addClass(id,className,classValue){$(id).style.className=classValue;   }   window['mySpace']={};   window['mySpace']['addClass']=__addClass;})();
上面的例子就可以用這種偽命名空間封裝並保護自己的所有函數、對象和變數。而且,由於它們位於同一個函數中,所以可以互相引用。為了對受保護的代碼進行全域化,隨後的一對括弧告訴瀏覽器立即執行返回的匿名函數,而且在執行期間將__addClass()賦值給了window的一個方法,這樣在外部只能執行addClass而__addClass被保護起來了。我可以這樣調用它:mySpace.addClass('oneId','font-width','bold')


javascript 匿名函數參數問題

第一次執行的是function裡的內容,因為function(){}()的作用是執行這個函數,至於為什麼報錯。。

因為執行完的傳回值是undefined,相當於setInterval(undefined,1000);自然就報錯了。。
 
js函數中匿名函數的this指標指向問題?javascript進

嗯,怎麼分析,它都應該是指向windows的。

除非是下面的這種函數,並不指向windows,而是事件對應的dom對象:

<div id="a">按</div>
<script>
document.getElementById('a').onclick = function(){alert(this.innerHTML)};
</script>

不過,這樣的函數已經不是真正的匿名函數了,比如你可以通過:

document.getElementById('a').onclick();

語句,來調用這個函數;
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.