以下方法的使用有什麼不同?在js節點中使用閉包
第一種方法:
for(var i = 0; i < 10; i++) {
(function(e){
setTimeout(function() {
console.log(e);
}, 1000);
})(i);
}
for(var i = 0; i < 10; i++) {
createTimeoutFunction(i);
}
第二種方法:
function createTimeoutFunction(e){
setTimeout(function() {
console.log(e);
}, 1000);
}
for(var i = 0; i < 10; i++) {
createTimeoutFunction(i);
}
我新的節點JS和使用閉。儘管這兩種方法都返回相同的輸出,但第二種方法運行時出錯。我不明白爲什麼我們需要像第一種方法那樣使用兩個循環。我們不能像第二種方法那樣執行嗎?
第一種方法是有點馬車,因爲'createTimeoutFunction'不存在 – EaterOfCode
沒有第二種方法給予什麼樣的錯誤呢? – raina77ow
@ raina77ow如果我嘗試在終端用於將打印第二方法上面的代碼'陣列 布爾 日期 錯誤 的EvalError 功能 無窮 JSON 數學 的NaN 編號 對象 的RangeError 的ReferenceError 正則表達式 字符串 語法錯誤 類型錯誤 URIError decodeURI decodeURIComponent encodeURI encodeURIComponent方法 EVAL isFinite的 isNaN parseFloat parseInt函數 未定義 '10次爲'函數createTimeoutFunction(E){'。這是爲什麼? – user850234