JavaScript函数参数

了解JavaScript函数参数的基础

一个函数可以接受一个或多个参数。

const dosomething = () => {
  //do something
}

const dosomethingElse = foo => { //do something }

const dosomethingElseAgain = (foo, bar) => { //do something }

从...开始ES6 / ES2015,函数可以具有参数的默认值:

const dosomething = (foo = 1, bar = 'hey') => {
  //do something
}

这使您可以在不填充所有参数的情况下调用函数:

dosomething(3)
dosomething()

ES2018引入了参数的尾随逗号,该功能有助于减少在参数周围移动(例如,在中间移动最后一个)时缺少逗号引起的错误:

const dosomething = (foo = 1, bar = 'hey',) => {
  //do something
}

dosomething(2, ‘ho!’)

也可以称呼最后一个参数后的逗号后面加上您的函数:

dosomething(2, 'ho!',)

您可以将所有参数包装在一个数组中,然后使用点差算子调用函数时:

const dosomething = (foo = 1, bar = 'hey') => {
  //do something
}
const args = [2, 'ho!']
dosomething(...args)

使用许多参数,记住顺序可能很困难。使用对象,解构可以保留参数名称:

const dosomething = ({ foo = 1, bar = 'hey' }) => {
  //do something
  console.log(foo) // 2
  console.log(bar) // 'ho!'
}
const args = { foo: 2, bar: 'ho!' }
dosomething(args)

函数现在支持默认参数:

const foo = function(index = 0, testing = true) { /* ... */ }
foo()

默认参数值已在ES2015中引入,并已在现代浏览器中广泛实现。

这是一个doSomething接受的功能param1

const doSomething = (param1) => {

}

我们可以为添加默认值param1如果在未指定参数的情况下调用了该函数:

const doSomething = (param1 = 'test') => {

}

当然,这也适用于更多参数:

const doSomething = (param1 = 'test', param2 = 'test2') => {

}

如果您有一个带有参数值的唯一对象怎么办?

曾几何时,如果我们必须将选项对象传递给函数,以使这些选项的默认值(如果其中一个未定义)具有默认值,则必须在函数内部添加一些代码:

const colorize = (options) => {
  if (!options) {
    options = {}
  }

const color = (‘color’ in options) ? options.color : ‘yellow’ … }

使用对象分解,您可以提供默认值,从而大大简化了代码:

const colorize = ({ color = 'yellow' }) => {
  ...
}

如果在调用我们的程序时没有传递任何对象colorize函数,类似地,我们可以默认分配一个空对象:

const spin = ({ color = 'yellow' } = {}) => {
  ...
}

免费下载我的JavaScript初学者手册


更多js教程: