在第一个代码中,调用IIFE时没有参数,请参见:
})();
所以,结果
args
数组为空,当扩散到参数列表中时,生成的参数列表为空;没有要记录的内容。
console.log
如果参数列表为空,则不执行任何操作。它
将
但是,如果使用至少一个参数调用IIFE,请记录一些内容:
const sum = (function(...args) {
// Now, it shows something!
console.log(...args);
return function sum(...args) {
console.log(...args); // this shows 1,2,3
return args.reduce((a, b) => a + b, 0);
};
})(9999);
console.log(sum(1, 2, 3)); // 6
在第二个代码中,只有一个函数,而不是包装在另一个函数中的函数,而这个函数
是
总是用参数调用。如果你打电话给
不
参数并将它们分散到
控制台日志
你会看到同样的效果:
function sum(...args) {
console.log(...args);
return args.reduce((a, b) => a + b, 0);
}
sum(); // 6