js中閉包常見面試問題

2021-09-12 01:19:18 字數 909 閱讀 1152

function a() 

return b

}

從**中就可以大概看出閉包的定義:函式 a 返回了乙個函式 b,並且函式 b 中使用了函式 a 的變數,函式 b 就被稱為閉包。

經典面試題,迴圈中使用閉包解決 var 定義函式的問題

for ( var i=1; i<=5; i++) , 1000 );

}console.log( i );

上面函式首先輸出最後一行的i為6 之後隔1s同時輸出5個6;

首先因為 settimeout 是個非同步函式,所有會先把迴圈全部執行完畢,這時候 i就是 6 了,所以會輸出一堆 6。

解決辦法兩種,第一種使用閉包

for (var i = 1; i <= 5; i++) ,  1000);

})(i);

}

第二種就是使用 settimeout 的第三個引數(第三個引數詳細請看mdn)

定時器啟動時候,第三個以後的引數是作為第乙個func()的引數傳進去。

for (var i = 1; i <= 5; i++) ,  1000);

})(i);

}

第三種就是使用 let 定義 i 了

for ( let i=1; i<=5; i++) , 1000 );

}

因為對於 let 來說,他會建立乙個塊級作用域,相當於

, 1000 );

}i++

i++...

}

SVM常見面試問題

答 幾何間隔與樣本的誤分次數間存在關係 其中的分母就是樣本到分類間隔距離,分子中的r是所有樣本中的最長向量值 答 會,超平面會靠近樣本少的類別。因為使用的是軟間隔分類,而如果對所有類別都是使用同樣的懲罰係數,則由於優化目標裡面有最小化懲罰量,所以靠近少數樣本時,其懲罰量會少一些。比如 假設理想的分隔...

C 常見面試問題

一 抽象與介面的區別 1,抽象 abstract 1 抽象類中可以有抽象方法,也可沒有 2 抽象方法包含實現,也可以由子類實現 3 抽象類不能被sealed修飾,只能使用abstract關鍵字 4 抽象方法不能在抽象類外部宣告 5 抽象類只能單繼承 6 可以有虛方法 virtual 在不同的繼承中,...

SpringMVC 常見面試問題

springmvc流程 原理 流程圖 亂碼問題 重定向和 在返回值前面加 redirect 或 forward return forward 跳轉的頁面或路由 重定向和 的區別 全域性異常 自定義實現spring的全域性異常解析器handlerexceptionresolver springboot...