什麼是高階函式
函式作為引數
模擬foreach
// foreach
function
foreach
(array, fn)
}let arr =[1
,3,4
,7,8
]foreach
(arr,
function
(item)
)
模擬filter
// filter
function
filter
(array, fn)
}return results
}let arr =[1
,3,4
,7,8
]// 過濾取偶數
let returnarr =
filter
(arr,
function
(item)
)console
.log
(returnarr)
function
makefn()
}makefn()
()// 呼叫 makefn 函式返回的函式
// 或
const fn =
makefn()
fn()
模擬once
函式
// once
function
once
(fn)}}
// 宣告 pay 函式 呼叫 once
let pay =
once
(function
(money)
rmb`)}
)// 呼叫 pay 函式
// 只會支付一次
pay(5)
pay(5)
pay(
5)
使用高階函式的意義
常用高階函式
模擬map()
函式
const
map=
(array, fn)
=>
return results
}let arr =[1
,2,3
,4]arr =
map(arr,
(item)
=> item * item)
console
.log
(arr)
模擬every()
函式
const
every
=(array, fn)
=>
}return result
}let arr =[9
,12,13
]let r =
every
(arr,
(item)
=> item >10)
console
.log
(r)
( js中break,return,continue區別 )
模擬some()
函式
const some =
(array, fn)
}return result
}let arr =[1
,3,4
,5]let r =
some
(arr,
(item)
=> item %
2===0)
console
.log
(r)
閉包
閉包的本質:函式在執行的時候會放到乙個執行棧上當函式執行完畢之後會從執行棧上移除,但是
堆上的作用域成員因為被外部引用不能釋放,因此內部函式依然可以訪問外部函式的成員
// 閉包
function
fnb()}
const fna =
fnb(
)fna
()
// 生成計算數字的多少次冪的函式
function
makepower
(power)
}// 2次方
let power2 =
makepower(2
)// 3次方
執行以上**,在開發者工具中打斷點除錯,檢視函式執行過程。
call stack 為當前站點呼叫函式,可以在途中看到呼叫兩個匿名函式
scope 為作用域,local 為區域性作用域(裡面的變數是 number,this 指向是 window)
closure 為閉包(裡面是跟閉包相關的變數 power ),跟閉包相關的外部函式是 makepower
通過let
定義的變數,他的作用域可以在 script 找到,通過var
定義的變數會掛載在 global 全域性物件上
scala學習筆記 高階函式
scala混合了物件導向和函式式的特性。在函式式程式語言裡,函式是 頭等公民 也就是說函式很重要,它可以像任何其他資料型別一樣被傳遞和操作。也就是說,函式可以作為乙個值傳給乙個變數。在scala中,函式是 頭等公民 就和數字一樣。可以在變數中存放函式 val a ceil val b sqrt 當然...
Python學習筆記 高階函式
高階函式的概念是我在學習kotlin的時候才接觸到的,後來才發現很多語言都有該特性。簡單的定義為 把函式作為引數傳入另乙個函式中 例如 def add x,y,f return f x f y print add 5,6,abs 其中,abs函式作為引數傳到add函式中,add函式就可以稱為高階函式...
python高階學習筆記(一) 高階函式
filter filter 函式接收乙個 函式 f 和乙個list 這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter 根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。例如,要從乙個list 1,4,6,7,9,12,17 中刪除偶數,保...