基礎內容回顧

2022-08-29 02:48:11 字數 1844 閱讀 9529

1.高階函式指把函式作為引數的函式,map和reduce就是兩個高階函式

map接受乙個方法作為引數,可以對乙個數列中的每乙個元素拿此方法做處理,像這樣

function pow(x)

[1,2,3,4,5].map(pow)

//[2, 3, 4, 5, 6]

reduce接受乙個方法作為引數,這個方法必須有兩個引數,可以對乙個數列中的元素做累計處理,第乙個引數為陣列處理的累積返回值,第二個引數為新加入處理的陣列元素

function pow(x,y)

[1,2,3,4,5].reduce(pow)

15

但是需要注意的是,map和reduce只需要處理陣列的方法,即只需要傳reduce(pow),不需要reduce(pow());另外,map和reduce是兩個方法,兩個api,直接跟在陣列後面,如:[1,2,3,4,5].reduce(pow)

2.閉包

閉包指的就是乙個函式裡面返回了乙個函式,或者這個函式返回的值裡有未執行的函式,像這樣:

function

count() );

}return

arr;

}

count(),執行後返回了arr陣列,arr陣列中每乙個元素都是乙個未執行的函式,返回出來是這樣的

count()

[funciton() ,

funciton() ,

funciton() ]

這就是閉包了,返回了未執行的函式或者返回的值裡包含未執行的函式,這裡要說的是閉包的第乙個特性,閉包可以儲存外部函式帶來的資料:

比如乙個函式內含閉包,在閉包外宣告var a=1;然後閉包中也用了a,那麼外部這個函式執行完後會返回這個閉包,閉包中這個a=1的值仍然儲存,單獨放在那裡也儲存著a=1,因為閉包是乙個「攜帶狀態的函式,並且它的狀態可以完全對外隱藏起來」

比如下面這個例子:

function

create_counter(initial)

}}var c1 =create_counter();

c1.inc(); //1

c1.inc(); //

2c1.inc(); //

3var c2 = create_counter(10);

c2.inc();

//11

c2.inc(); //

12c2.inc(); //

13

如以上**,x的值在閉包中始終存在。

我之前疑惑的一點是在呼叫c1.inc()

時,c1不是等於create_counter()嗎?它每c1.inc()一次,先執行c1時難道不會把x再次初始化嗎,那閉包中儲存的值不是被初始化了

後來想了想,原來c1=create_counter()意思是c1是create_counter這個函式執行後的返回值,它的返回值是什麼,是閉包啊,沒有那個初始化語句了,所以上面說「先執行c1」是可笑的,因為它只是乙個值而已,它只是乙個執行過的函式返回的值而已

閉包的第二個特性就是,閉包儲存的值(外部的值沿用到內部因未執行儲存起來的),儲存的是這個值的最後乙個狀態

什麼意思呢

function

count() );

}return

arr;

}

這個最終返回的是[16,16,16],因為i迴圈完了的時候,返回的閉包還是[funciton() ,

funciton() ,

funciton()

]並沒有執行,但是i已經等於4了,所以等它們重見天日的時候,它們內部儲存的狀態(值)是i=4

待續

HTML內容回顧

1.內容回顧 1.html 1.標籤 1.標籤分類 1.塊級標籤 2.內聯標籤 2.常用標籤 1.a table p div h1 h6 span ol ul dl 2.表單系列 form 1.input 1.text 2.password 3.date datetime 4.email 5.rad...

HTML CSS 內容簡單回顧

html內容簡單回顧 什麼是html 超文字標記語言 p標籤 段落標籤 br標籤 簡單換行 h1 h6 標題標籤 hr標籤 水平分割線,華麗的分割線 font標籤 color屬性改變顏色,size預設3 b標籤 加粗 i標籤 斜體 strong標籤 帶語義的加粗 em標籤 斜體標籤,帶語義 img標...

學習內容回顧 CSS定位

css定位主要有四種,靜態定位 相對定位 絕對定位和固定定位。其中static靜態定位,是元素的預設定位方式,靜態定位又可以認定為不定位,這個定位方式不能使用top,bottom,left,right和z index屬性,其它三種定位則可以使用以上幾個屬性。我們這裡主要講一講後邊的這三個定位。1 相...