JavaScriptにおける「Falsy」とは?

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」値をチェックしたいものです。

それは、vnull または undefined と厳密に等しくない限り、v.prop にアクセスすることは安全であるということです。 NaN.prop でも大丈夫です。

const x = Number('abc');x; // NaNx.prop; // undefined

v == nullv === 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

コメントを残す

メールアドレスが公開されることはありません。