JavaScriptにおいて0は「false」と判定される。0の存在を忘れて真偽値判定していると知らぬ間に0をfalse側にぶち込んでいることがある。
let a = 1;
function fn(num) {
num = num || -1; //←右辺のnumにundefineもnullもNaNも0も入る
console.log(num);
}
fn(a);
引数をデフォルト引数num=1
にすればいいだろうと思ったけれど、0はよくともnull
などの場合にはデフォルト引数がセットされず、nullがセットされてしまうらしい。なぜ……
(num自体をif文判定してデフォルトの値を引数にセットする記述を追加する必要がある)
0をfalse判定されるとまずいことにならないかどうか、プログラム上で気にかけておく必要がある……がうっかり忘れそうなので、真偽値判定にかける値に0を含めないようにするか、 === 0
など直に判定を記述した方がいいかもしれない。