我一直使用以下语法来确保输入变量不是null。
function f(input){
if(input === null)
input = "";
...
}
最近,我注意到用下面的方式表达它更短。
function f(input){
input = input ? input : "";
...
}
而且,我也见过这种语法。
function f(input){
input = input || "";
...
}
- 这些是否等同(不是在他们做什么而是在如何他们做)?
- 最推荐哪个(可读性等)?
请注意,我将严格处理字符串输入,使其要么有效要么为空(根本不提供)。如果我想将保护扩展到包括其他类型,我还应该考虑哪些其他问题?
最佳答案
首先,请注意它们并不完全相同。 #2 和#3 的结果完全相同:除非 input
为真,否则将其设置为空字符串。 #1 表示“除非 input
为 null
,否则将其设置为空字符串。因此,如果提供了 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/