JS高階函式把函式傳著玩兒

2021-10-07 22:26:57 字數 2443 閱讀 4521

# 函式作為引數
匿名函式作引數:

function

f1(fn)

//fn是引數,最後作為函式使用了,函式是可以作為引數使用

//傳入匿名函式f1(

命名函式作引數:

function

f1(fn)

//命名函式

functionf2(

)f1(f2)

;

函式作為引數的時候,如果是命名函式,那麼只傳入命名函式的名字,沒有括號給乙個陣列,對陣列進行排序

var arr =[1

,100,20

,200,40

,50,120,10

];//排序

然而並沒有達到想要的樣子,由於sort取決於具體實現,因此無法保證排序的時間和空間複雜性。

查閱文件可以發現,其實sort有乙個引數

arr.sort([comparefunction])
排序後的陣列。請注意,陣列已原地排序,並且不進行複製。

注意:

如果沒有指明comparefunction,那麼元素會按照轉換為的字串的諸個字元的unicode位點進行排序。例如 「banana」 會被排列到 「cherry」 之前。當數字按由小到大排序時,9 出現在 80 之前,但因為(沒有指明comparefunction),比較的數字會先被轉換為字串,所以在unicode順序上 「80」 要比 「9」 要靠前。

如果指明了comparefunction,那麼陣列會按照呼叫該函式的返回值排序。即 a 和 b 是兩個將要被比較的元素:

因此,我們需要改造一下上面的**,將寫入一段比較函式提高sort的準確性

從大到小

var arr =[1

,100,20

,200,40

,50,120,10

];//排序---函式作為引數使用,匿名函式作為sort方法的引數使用,那麼此時的匿名函式中有兩個引數,

從小到大:

var arr =[1

,100,20

,200,40

,50,120,10

];//排序---函式作為引數使用,匿名函式作為sort方法的引數使用,那麼此時的匿名函式中有兩個引數,

此方法可以比較字串以及數字,若只需要單獨比較數字,而非字串的話,有更加簡單的方法

從大到小:

var arr =[1

,100,20

,200,40

,50,120,10

];arr.

sort

(function

(obj1, obj2));

console.

log(arr)

;

從小到大:
var arr =[1

,100,20

,200,40

,50,120,10

];arr.

sort

(function

(obj1, obj2));

console.

log(arr)

;

js函式高階

fn fn.call 普通函式呼叫 則函式中this window obj.sayhello 物件呼叫 函式中this 該物件 new student 構造函式呼叫 this 例項物件 btn.onclick fun 通過事件觸發 this指的是繫結事件物件 setinterval function...

js高階函式

filter用於對陣列進行過濾。它建立乙個新陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素。注意 filter 不會對空陣列進行檢測 不會改變原始陣列 其中,函式 function 為必須,陣列中的每個元素都會執行這個函式。且如果返回值為 true,則該元素被保留 函式的第乙個引數 cu...

js 函式高階

所有例項物件都有乙個特別的屬性 顯式原型與隱式原型的關係 原型鏈object.prototype function.prototype.proto 理解分類 生命週期 包含哪些屬性 函式執行上下文建立和初始化的過程 函式 測試題1 function a var a console.log typeo...