国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

胡扯JS系列-匿名函數的自動運行

馬龍駒 / 2987人閱讀

摘要:函數有很多種,我們就選擇我們不懂的函數開始學習中自動運行的匿名函數在中可以使用匿名函數在我們學習的時候也有類似的概念,匿名實現類,在中的函數也是一種對象,也是需要一塊內存對其進行保存。

函數有很多種,我們就選擇我們不懂的函數開始學習!
JS中自動運行的匿名函數

在JavaScript中可以使用匿名函數(在我們學習Java的時候也有類似的概念,匿名實現類),在JavaScript中的函數也是一種對象,也是需要一塊內存對其進行保存。如果想調用該函數,我們只是需要找到這塊內存即可,然后就可以執行。關鍵步驟如下:

將函數對象保存到一塊內存當中

找到這塊內存

通常我們使用函數名來查找這塊地址,不過通過函數名只是找到這塊內存地址的一種工具而已。

function test01(){

    console.log("定義方式");
}
//函數的調用
test01();

var test02 = function () {
    console.log("變量方式");
}
//函數的調用
test02();
上述的示例,我們就是通過函數名找到了這塊內存地址,在使用()進行函數的執行,也就是只要我們能找到這塊內存就可以去執行!

匿名函數,顧名思義就是沒有名字的函數,其實在上面寫的test02函數表達式中,我們就創建了匿名函數,并將該函數賦值給了變量test02,用test02來進行函數的調用,調用方式就是在變量test02后面加入小括號,這是匿名函數的調用方式之一

還有一種匿名函數的調用規則如下:

第一步:使用function關鍵字定義一個函數

第二步:使用小括號將內容括起來

關鍵步驟:這只是一種語法的要求,否則后面的執行語句無法被引擎正確的識別,如果這樣將函數定義好,引擎就會為其分配一塊內存保存

第三步:直接在后面加入小括號完成調用,可以放入參數

(function (x, y) {
    console.log(x+y);
})(2, 3);
//等價于代碼
var test03 = function(x,y){
    console.log(x+y);
}(2,3);

代碼分析

var log=(function(){
    console.log("創建日志函數");
    return function(param){
        console.log(param);
    };
})();
log("www.baidu.com");

這段代碼屬于一種比較經典的代碼,這里創建了一個自動運行的匿名函數,不過其返回值仍然是一個匿名函數,也就是說函數自運行后返回的結果仍然是函數。把返回值的函數賦值給變量log,就可以使用log變量來調用返回的函數了。

請注意上述代碼中,我們其實是包含兩塊內存保存函數,自動運行的函數本身有一塊內存來保存,當碰到后面表示執行的小括號后會自動運行,另外還有一塊內存來保存所返回的函數,而返回的值其實是這塊內存地址,這樣log變量就指向了這塊保存函數的內存,因此可以使用log來完成對函數的執行。

一些有趣的自運行函數的定義方式

// 下面2個括弧()都會立即執行  
(function () { /* code */ } ()) // 推薦使用這個  
(function () { /* code */ })() // 但是這個也是可以用的  
  
// 由于括弧()和JS的&&,異或,逗號等操作符是在函數表達式和函數聲明上消除歧義的  
// 所以一旦解析器知道其中一個已經是表達式了,其它的也都默認為表達式了  
var i = function () { return 10; } ();  
true && function () { /* code */ } ();  
0, function () { /* code */ } ();  
  
// 如果你不在意返回值,或者不怕難以閱讀
// 你甚至可以在function前面加一元操作符號  
!function () { /* code */ } ();  
~function () { /* code */ } ();  
-function () { /* code */ } ();  
+function () { /* code */ } ();  
  
// 還有一個情況,使用new關鍵字,也可以用,但我不確定它的效率  
// http://twitter.com/kuvos/status/18209252090847232  
new function () { /* code */ }  
new function () { /* code */ } () // 如果需要傳遞參數,只需要加上括弧()  

void function(){  /* code */  }();  

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/100818.html

相關文章

  • 胡扯JS系列-內存模型和函數執行

    摘要:二在中函數是如何執行的函數我們之前已經都接觸過了,函數無非有兩部分數據和對數據的操作。函數的調用輸出結果為我們使用了的調試,函數在執行時會將參數和函數中所用到的變量方法相同的地位,即在函數內部執行的時候不會區分是參數還是變量。 showImg(https://segmentfault.com/img/remote/1460000017790532); 準備寫點亂七八糟的文章,對Java...

    douzifly 評論0 收藏0
  • JavaScript學習

    摘要:和,前者是過濾選擇器而后者是子代選擇器。第三章中的操作查找節點想要查找元素節點或者是屬性節點,就是通過前一章學習的選擇器獲取相應元素的文本,或者是通過選擇器屬性名獲取某元素相應屬性的值。 About Javscript record the thing which maybe forgetten 原生JavaScript Javascript DOM document.writ...

    J4ck_Chan 評論0 收藏0
  • JS腳丫系列】重溫閉包

    摘要:內部的稱為內部函數或閉包函數。過度使用閉包會導致性能下降。,閉包函數分為定義時,和運行時。循環會先運行完畢,此時,閉包函數并沒有運行。閉包只能取得外部函數中的最后一個值。事件綁定種的匿名函數也是閉包函數。而對象中的閉包函數,指向。 閉包概念解釋: 閉包(也叫詞法閉包或者函數閉包)。 在一個函數parent內聲明另一個函數child,形成了嵌套。函數child使用了函數parent的參數...

    MartinDai 評論0 收藏0
  • 深入理解JavaScript系列4:立即調用函數表達式

    摘要:前言大家學的時候,經常遇到自執行匿名函數的代碼,今天我們主要就來想想說一下自執行。其實,前面兩個例子里的變量,也可以換成,因為和外面的不在一個作用于,所以不會出現問題,這也是匿名函數閉包的威力。 前言 大家學JavaScript的時候,經常遇到自執行匿名函數的代碼,今天我們主要就來想想說一下自執行。 在詳細了解這個之前,我們來談了解一下自執行這個叫法,本文對這個功能的叫法也不一定完全對...

    roadtogeek 評論0 收藏0
  • PHP新特性之閉包、匿名函數

    摘要:閉包閉包是什么閉包和匿名函數在中被引入。可以將匿名函數和閉包視作相同的概念。閉包和字符串或整數一樣,是一等值類型。何時使用我們通常把閉包當做函數和方法的回調使用。 閉包 閉包是什么? 1).閉包和匿名函數在PHP5.3中被引入。2).閉包是指在創建時封裝函數周圍狀態的函數,即使閉包所在的環境不存在了,閉包封裝的狀態依然存在,這一點和Javascript的閉包特性很相似。3).匿名函數就...

    luzhuqun 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<