我使用以下语法确保输入参数不是 null 。
function hazaa(shazoo){
shazoo = shazoo || " ";
}
它适用于我为测试的所有内容,除了零。
null - > “” “哔” - > “嘟”
4 - > 4
但是...
0 - > “”
我猜测零被视为 null 或 false ,因此创建了陷阱。什么是正确的语法,所以零为零?
如果它使建议语法的问题变得相当简单,我们可以假设输入将是char,string,number或null。
答案 0 :(得分:7)
我正在使用以下语法来确保我的输入参数不为空。
如果您要做的只是在输入为" "
时才使用null
,那么请使用三元运算符,就像这样
shazoo = shazoo === null ? " " : shazoo;
This answer列出了JavaScript中被视为Falsy的值。该表显示零被视为Falsy。这就是当shazoo || " "
为零时," "
被评估为shazoo
的原因。
答案 1 :(得分:1)
Boolean(0)
输出false
,因此第二个选项""
您可以尝试(查看此fiddle)
function hazaa(shazoo){
return shazoo == null ? " " : shazoo;
}
hazaa(0); //output 0
答案 2 :(得分:1)
我猜测零被视为空或假
是0被视为假。
什么是正确的语法,所以零为零?
您可以尝试使用
shazoo = shazoo === null ? " " : shazoo;
答案 3 :(得分:1)
使用以下内容:
if (shazoo === null){
...
}else{
...
}
答案 4 :(得分:1)
您可以===
运营商,最好的方式是
if (shazoo === null)
shazoo = " ";
无需使用其他
shazoo = shazoo //no sense
答案 5 :(得分:1)
在我看来,这是您不想进行类型安全比较的少数几个地方之一。 在这样的地方你想要以与null相同的方式威胁未定义;你不想每次都写它。
//so better use this
shazoo = shazoo == null ? " " : shazoo;
//than this
shazoo = shazoo === null || shazoo === undefined ? " " : shazoo;
答案 6 :(得分:1)
新标记
您也可以在ES6中使用默认参数表示法,如果为该参数传递undefined
,则默认参数表示法。
function foo(shazoo = "default"){
console.log(shazoo);
}
foo(); // "default"
foo(undefined); // "default"
var bar; //
foo(bar); // "default"
foo("my string"); // "my string"
foo(null); // null
它无法处理null