3

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

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

最近,我注意到如下表达它更短。

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

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

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

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

4

1 回答 1

3

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

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

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

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

input = input || "";

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

于 2013-06-22T16:04:18.887 回答