2019年10月28日
JavaScriptでは、JavaScriptの組み込み型強制によって値がfalse
に変換されるとFalsyと呼ばれるようになります。 たとえば、次のif
ステートメントを考えてみましょう:
if (v) { console.log('v is not falsy');}
console.log()
は、v
が次の値のいずれかでない場合にのみ実行されます:
false
0
-
0n
.X.Y. : BigIntとしての0 -
''
: 空文字列 null
undefined
NaN
この7つがJavaScriptで唯一のfalsy値である。 falsy でない値はすべて truthy です。
特に、非 Null オブジェクトは、その valueOf()
関数が偽の値を返したとしても、常に真理である。
例えば、文字列が25文字より短いことをチェックする関数を実装しているとします。
function checkLength(v) { if (!v) { throw new Error('Must provide a string!'); } return v.length < 25;}
残念ながら、checkLength('')
は empty string is falsy なのでエラーを投げます。
function checkLength(v) { if (typeof v !== 'string') { throw new Error('Must provide a string!'); } return v.length < 25;}
Nullish Values
真偽値をチェックする代わりに、通常は「nullish」値をチェックしたいものです。
それは、v
が null
または undefined
と厳密に等しくない限り、v.prop
にアクセスすることは安全であるということです。 NaN.prop
でも大丈夫です。
const x = Number('abc');x; // NaNx.prop; // undefined
v == null
がv === null || v === undefined
と等しいかどうか確認する。言い換えれば、ある値がnull
と緩く等しいのは、それがnull
またはundefined
と厳密に等しい場合だけです。 つまり、v == null
かどうかをチェックする方が、真偽を確認するよりも正確であることが多い。
More Fundamentals Tutorials
- How to Compare Objects in JavaScript
- How to Check if a JavaScript Variable is Undefined
- The Difference Between let JavaScriptのグローバル変数
- JavaScript String Interpolation
- How to check for `NaN` in JavaScript
- JavaScript Enums