javascript - 在 JavaScript 中提供默认字符串参数

标签 javascript coding-style

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

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

最近,我注意到用下面的方式表达它更短。

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

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

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

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

最佳答案

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

如果没有向#1 提供任何内容,(即 f()input 将是 undefined,因为这是值在缺少参数时传递,而不是 null。其中一个可以解决此问题:

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

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

input = input || "";

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

关于javascript - 在 JavaScript 中提供默认字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17252588/

相关文章:

javascript - 寻找转译器 : php to javascript

javascript - console.log 中的 %j 说明符不包括某些属性

java - 为什么Android约定不遵循常规Java

python - 如何在 Python 中正确声明实例字段

coding-style - 使用恶意工具进行编码的技巧?

c# - 编写此 C# 循环代码的更优雅方式?

javascript - 通过单击循环停止动画(问题)

javascript - 当没有互联网连接来加载 Google Map Canvas 时图像回退

java - 在不需要时使用 super 有什么坏处吗?

javascript - 如何创建具有锁定 y 轴的水平滚动 Chart.js 折线图?