以下方法的使用有什么不同?在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