kof*_*fus 7 javascript ecmascript-6
很明显,arguments.length不起作用.
我可以将签名更改为 f: (...args) => { if (args.length>0) { ..}; };
但是这会从函数声明中删除参数信息.
有更好的方法吗?
简短的回答是:“不”,或“也许”。
\n更长的答案是:来自MDN:
\n\n\n与函数表达式相比,箭头函数表达式的语法更短,并且在词法上绑定 this 值(不绑定它自己的
\nthis、arguments、super或new.target)。箭头函数始终是匿名的。这些函数表达式最适合非方法函数,并且不能用作构造函数。
箭头函数的主要用途是回调,执行代码就像在其父上下文中执行一样。从而防止恼人的和丑陋的const that = this;要求并隐式地执行它。
由于这个原因,并且由于它是匿名执行的,因此在父级上下文中,不存在arguments,或者更确切地说,该值是父级上下文的。箭头函数只能解决一般用例,而不是所有用例。
// const that = this;\nvar that = this;\n\n...\n f: function (a, b, c) {\n ...\n }\n...\nRun Code Online (Sandbox Code Playgroud)\narguments,等等)that(或其他一些变量名称)而不是this.that引用...\n f: (function (a, b, c) {\n ...\n }).bind(this)\n...\nRun Code Online (Sandbox Code Playgroud)\nthis可用arguments,等等)...\n f: (...args) => {\n const [a, b, c] = args;\n\n ...\n }\n g: (a, b, c, ...others) => {\n ...\n }\n...\nRun Code Online (Sandbox Code Playgroud)\narguments实例| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |