在回调中给出意外值的胖箭头函数的"参数"的值

Tem*_*ary 1 javascript node.js ecmascript-6

请参阅以下代码段:

片段#1:

let fs = require("fs");
fs.readFile(process.argv[2], "utf8", (error, data) => console.log(arguments));
Run Code Online (Sandbox Code Playgroud)


小片#2:

let fs = require("fs");
fs.readFile(process.argv[2], "utf8", (error, data) => console.log(error, data));
Run Code Online (Sandbox Code Playgroud)


预期日志:(error, data),例如:

null 'console.log("HELLO WORLD");\r\n'


当您尝试这两个片段时,您会发现Snippet#1会执行并记录一些意外的值,console.log(arguments)但会console.log(error, data)记录正确的值; 价值观(error, data).

为什么以及为Snippet#1记录的值是多少?

Tam*_*dus 10

没有绑定参数

箭头函数不绑定参数对象因此,参数只是对封闭范围中名称的引用.

来自:MDN - 箭头功能

如果您希望在箭头函数中使用可变参数,请使用其余参数语法:

fs.readFile(process.argv[2], "utf8", (...args) => console.log(args));
Run Code Online (Sandbox Code Playgroud)