使用参数变量获取传递给 ES6 箭头函数的参数
Getting arguments passed to an ES6 arrow function using arguments variable
我了解箭头函数在 ES6 中的工作原理,以及词法,但我想知道是否有人知道将参数传递给箭头函数的方法?
在 ES5 中,您可以简单地执行以下操作:
function foo( bar, baz ){
console.log('Args:', arguments.join(', '))
}
但是,在 ES6 中,如果您使用箭头函数,如下所示:
const foo = ( bar, baz ) => {
console.log('Args:', arguments.join(', '))
}
arguments
变量返回一个对象,该对象与参数无关。
所以,我想知道是否有人有办法将参数传递给箭头函数?
编辑
我想也许我应该提供一些关于我想要完成的事情的信息,也许如果上述是不可能的,有人有更好的主意。
基本上,我正在向BluebirdJS asCallback方法添加一个IIEF,该方法将确定是否确实提供了回调,如果没有,则返回承诺。
这是 ES5 中的一个工作示例:
var _ = require('lodash')
var Promise = require('bluebird')
function testFunc( foo, callback ) {
return new Promise( function ( res, rej ){
res('You Said: ' + (_.isString( foo ) ? foo : 'NOTHING') )
})
.asCallback((function ( args ) {
return _.findLast(args, function(a) {
return _.isFunction( a )
})
})( arguments ))
}
testFunc('test', function( err, data ) {
if( ! _.isEmpty( err ) )
console.log('ERR:', err)
else
console.log('DATA: ', data)
})
// DATA: You Said: test
testFunc(function( err, data ) {
if( ! _.isEmpty( err ) )
console.log('ERR:', err)
else
console.log('DATA: ', data)
})
// DATA: You Said: NOTHING
因此,如果我使用所有 ES5 函数,则可以正常工作,并且我不介意将它们用于 IIEF,或者在需要时在 IIEF 中使用。但这取决于函数中的arguments
变量,我真的不想将其用作 ES5 函数,而是坚持使用 ES6 Arrow 函数。因此,如果有一些 ES6 方法可以在 ES6 箭头函数中获取参数,那就完美了!
箭头函数没有自己的 this 和参数。 话虽如此,您仍然可以将所有参数传递到 使用 Rest 参数的箭头函数,又名展开运算符:
参考: https://strongloop.com/strongblog/an-introduction-to-javascript-es6-arrow-functions/
function message(msg) {
const foo = (...args) => console.log(args[0]);
foo(`Message: ${msg}`);
}
message('Hello World'); // Message: Hello World
相关文章:
- 简单的ES6承诺问题-交换解决和拒绝参数
- 如何在ES6类中使用参数调用函数
- 为什么ES6 Fiddle没有't覆盖命名参数
- 使构造函数参数具有ES6类方法的特权
- ES6类构造函数参数
- 在ES6中将数组析构函数参数的语法
- 具有默认参数值的 ES6 类构造函数上的 NodeJS 错误
- 无参数的ES6箭头功能
- ES6承诺:如何用参数链接函数
- 我可以将参数传递给ES6生成器函数吗
- ES6默认参数
- ES6 默认选项参数
- Babel:ES6 中的函数参数类型
- ES6类,传递函数作为参数来注册expressjs路由
- 当函数绑定在构造函数中时,如何在 ES6 React 中向事件处理程序添加参数
- 在 ES6 中自动将参数设置为实例属性
- 使用参数变量获取传递给 ES6 箭头函数的参数
- 将默认对象作为函数参数es6传递可以,但不能作为普通参数
- 必须传递一个空对象作为参数ES6
- 参数.es6中用于确定调用函数的调用选项