【发布时间】:2021-01-26 02:08:56
【问题描述】:
在我的书中MEAN 2nd Edition
这些例子都是旧的。帮助如何将此代码带入 ES6 标准 如果我将 var 更改为 let 则代码不起作用。 我明白为什么,但是如何正确书写
function logCar(logMsg, callback){
process.nextTick(function() {
callback(logMsg);
});
}
const cars = ["Ferrari", "Porsche", "Bugatti"];
for (const idx of cars){
var message = "Saw a " + cars[idx];
logCar(message, ()=>console.log("Normal Callback: " + message));
}
for (const idx in cars){
var message = "Saw a " + cars[idx];
((msg)=>{
logCar(msg, ()=> console.log("Closure Callback: " + msg));
})(message);
}
【问题讨论】:
-
定义“不起作用”。如果您在“正常回调”中谈论
message变量的值变为undefined,那实际上是一个功能。 -
如果在第一个循环中将
var替换为let(或者更好的是const),它就等同于第二个循环的“关闭回调”示例。这就是块作用域变量的全部意义所在。 -
顺便说一句,这本书是否已经将
const用于cars和idx?这真的很奇怪。
标签: javascript node.js ecmascript-6 closures