JS高階函數的理解
高階函數是指至少滿足下列條件之一的函數。
· 函數可以作為參數被傳遞
· 函數可以作為返回值輸出
一個例子,我們想在頁面中創建100個div節點,這是一種寫法。我們發現並不是所有用戶都是想把這100個div顯示的的。所以就有第二種寫法
var appendDiv=function(){ for(var i=0;i<100;i++){ var div =document.createElement('div'); div.innerHTML=i; document.body.appendChild(div); div.style.display='block'; } } appendDiv();
第二種寫法
這是我們appendDiv傳入了一個函數
function(node){ node.style.display='none'; }
然后在appendDiv中判斷這個是否是function,如果是我們就執行他,把它傳入appendDiv()中
var appendDiv=function(callback){ for(var i=0;i<100;i++){ var div =document.createElement('div'); div.innerHTML=i; document.body.appendChild(div); if(typeof callback=='function'){ callback(div); //console.log(callback); } } } appendDiv(function(node){ node.style.display='none'; });
結論:
div.style.display='block';//這段代碼是不合理的,這段代碼放進去成為了難以復用的程序,所以我們得用函數作為參數傳進去 //原理是這樣的,function(node){node.style.display='block';}傳入進去后,就相當於把這個匿名函數變成了callback函數 //即 var callback = function(node){ node.style.display='block'; } callback(div);//函數執行