可以在JS中用参数调用没有参数的函数吗?

时间:2019-01-09 23:39:59

标签: javascript ecmascript-6

我试图弄清楚这段代码在做什么,以及它是如何工作的。不带任何参数时如何调用foo = require('foo')?

foo.js

module.export = async () => { do something and return response(200) }

bar.js

let foo = require('foo')
module.exports = {
  foo: async (req) => { return foo(req) }
}

route.js

let api = required('api')
let bar = required('bar')
module.exports = api => {
  api.get('/foo', async req => await bar.foo(req))
}

1 个答案:

答案 0 :(得分:1)

TLDR:

是的,允许。

工作原理

js中的所有函数都可以访问名为arguments的局部变量。 arguments变量是一个类似数组的对象(看起来像数组,但不是Array类的实例),包含所有传递给函数的参数。这基本上是支持变量参数的js机制。

示例:

function a () {
    for (x=0; x<arguments.length); x++) {
        console.log(arguments[x]);
    }
}

除了允许您传递比函数js定义的参数更多的参数外,还允许您传递比函数所需的参数更少的参数。您不传递的参数仅被赋予undefined的值。