请参阅以下代码段:
代码段#1:
let fs = require("fs");
fs.readFile(process.argv[2], "utf8", (error, data) => console.log(arguments));
Snippet#2:
let fs = require("fs");
fs.readFile(process.argv[2], "utf8", (error, data) => console.log(error, data));
预期日志
(error, data)
的值,例如:
null 'console.log("HELLO WORLD");\r\n'
当您尝试这两个代码段时,您会发现代码段#1 会执行并记录console.log(arguments)
的一些意外值,但console.log(error, data)
会记录正确的值;值(error, data)
。
为什么以及为Snippet#1记录的值是什么?
答案 0 :(得分:10)
没有参数绑定
箭头函数不绑定参数对象因此,参数是 只是对封闭范围内名称的引用。
如果您希望在箭头函数中使用可变参数,请使用其余参数语法:
fs.readFile(process.argv[2], "utf8", (...args) => console.log(args));
答案 1 :(得分:5)
@Tamas正在拍摄,
但是如果您想知道ES6等新的javascript功能正在做什么,那么OP的一个小提示。我把代码粘贴到Babeljs.io试试看。
例如。您的代码 - >