null,false,空文字を掛けると0になる
見出しの通りJavaScriptの掛け算は数値とnull,false,空文字を掛けると0になります。
実際に実行した結果は以下の通り。
function multiply(a, b) {
return a * b
}
console.log(multiply(3, 4)) // 12
console.log(multiply(3)) // NaN
console.log(multiply(3, undefined)) // NaN
console.log(multiply(3, null)) // 0
console.log(multiply(3, false)) // 0
console.log(multiply(3, '')) // 0
console.log(multiply(3, 0)) // 0
TypeScriptを使用していないと割とよくある間違いなので注意が必要です。
数値以外の引数なら0を返さない処理
null,false,空文字の場合は0ではなくNaNを返したい場合はtypeofでnumberの型かチェックしてnumberでなければNaNを返します。
function multiply(a, b) {
const result = typeof b === 'number' ?
b :
NaN
return a * result
}
console.log(multiply(3, 4)) // 12
console.log(multiply(3)) // NaN
console.log(multiply(3, undefined)) // NaN
console.log(multiply(3, null)) // NaN
console.log(multiply(3, false)) // NaN
console.log(multiply(3, '')) // NaN
console.log(multiply(3, 0)) // 0
引数がなければ0を返す場合
逆に第2引数がない、あるいはundefined, null, falseなどは0を返したい場合はデフォルト引数で0を設定します。
function multiply(a, b = 0) {
return a * b
}
console.log(multiply(3, 4)) // 12
console.log(multiply(3)) // 0
console.log(multiply(3, undefined)) // 0
console.log(multiply(3, null)) // 0
console.log(multiply(3, false)) // 0
console.log(multiply(3, '')) // 0
console.log(multiply(3, 0)) // 0