协慌网

登录 贡献 社区

有没有更好的方法在 JavaScript 中执行可选的函数参数?

我总是在 JavaScript 中处理可选参数,如下所示:

function myFunc(requiredArg, optionalArg){
  optionalArg = optionalArg || 'defaultValue';

  // Do stuff
}

有没有更好的方法呢?

有没有使用||那会失败吗?

答案

如果传递了 OptionalArg,您的逻辑将失败,但评估为 false - 请尝试将此作为替代方法

if (typeof optionalArg === 'undefined') { optionalArg = 'default'; }

或另类成语:

optionalArg = (typeof optionalArg === 'undefined') ? 'default' : optionalArg;

使用哪个成语最能传达您的意图!

在 ECMAScript 2015(又名 “ES6”)中,您可以在函数声明中声明默认参数值:

function myFunc(requiredArg, optionalArg = 'defaultValue') {
    // do stuff
}

这篇关于 MDN的文章中更多关于它们(尽管文章标题,它们在 JavaScript 中被称为 “参数” 而不是 “参数”)。

目前仅支持 Firefox ,但随着标准的完成,预计支持将迅速提升。

我发现这是最简单,最易读的方式:

if (typeof myVariable === 'undefined') { myVariable = 'default'; }
//use myVariable here

Paul Dixon 的回答(以我的拙见)不如此可读,但归结为偏好。

insin 的答案要先进得多,但对大功能更有用!

编辑 11/17/2013 9:33 pm:我已经为 Node.js 创建了一个包,它可以更容易地 “重载” 称为参数的函数(方法)。