【问题标题】:Providing a default string parameter in JavaScript在 JavaScript 中提供默认字符串参数
【发布时间】:2013-06-22 15:58:24
【问题描述】:

我一直使用以下语法来确保输入变量不是null

function f(input){
  if(input === null)
    input = "";
  ...
}

最近发现用下面的方式来表达会比较短。

function f(input){
  input = input ? input : "";
  ...
}

而且,我也见过这种语法。

function f(input){
  input = input || "";
  ...
}
  1. 它们是否相同(不是在做什么,而是在如何他们这样做)?
  2. 最推荐哪个(可读性等)?

请注意,我将严格处理字符串的输入,使其要么是有效的,要么是 null(根本没有提供)。如果我想扩展保护以包括其他类型,我应该考虑哪些其他问题?

【问题讨论】:

  • 另一个 - input || (input = "");
  • @VitaliyPetrychuk 会更快吗?另外 - 我希望 return 或 *input = * 在您的建议之前。我弄错了吗?
  • 我不认为这是你必须优化的代码:)

标签: javascript coding-style


【解决方案1】:

首先,请注意它们并不完全相同。 #2 和 #3 的结果完全相同:除非input 是真实的,否则将其设置为空字符串。 #1 表示“除非inputnull,否则将其设置为空字符串。因此,如果提供了falseinput 在#1 中将是false,但在#2 和#3 中将是'' .

如果没有向 #1 提供任何内容(即 f()input 将是 undefined,因为这是在缺少参数时传递的值,而不是 null。其中之一将修复这个:

if(input === undefined)
if(input == null)

否则,是的,它们在功能上是等效的。对我来说,最好的写法是

input = input || "";

这是我喜欢的风格。它可能是你的;它可能不会。但最重要的是,保持一致

【讨论】:

  • 另外,由于OP担心他的cmets的速度,你喜欢的风格是faster
  • @Nile 虽然不同之处在于可以乐观地称为“无穷小”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
相关资源
最近更新 更多