私は今、ES2015 +の贅沢にいくつかのプロジェクトを抱えており、新しいワンダーランドでundefined
をチェックするために非常に嫌われている松葉杖を取り除くことができるかどうか疑問に思っています。
ES2015 +のtypeof varName === 'undefined'
へのより短い、しかしまだ正確な方法はすでにありますか?
もちろん デフォルトのパラメーター を使用できますが、これも不必要な割り当てのように感じます。
function coolFn(a = null){
if (a===null) console.log("no a supplied");
}
varName === undefined
を確認するだけです。
古いブラウザーでは、グローバルundefined
変数に代替値を割り当てることができましたが、そのテストは失敗しましたが、ES2015 +では不可能になりました。
パラメーターとしてundefined
を明示的に渡すことと、arguments.length
を見る以外にパラメーターを完全に除外することを区別する方法がないことに注意してください。
typeof varName === 'undefined'
が役立つのは、変数varName
が宣言されているかどうかわからない場合だけです。
IMOでは、変数が宣言されているかどうかわからない場合、コードに重大な問題があります。
他の場合には、より良いオプションがあります:
varName === void 0
これは、varName
が未定義かどうかを検出します。
void
は、引数を受け取り(0
の代わりに何でも使用できます)、未定義を返す演算子です。
varName === undefined
これはshouldvarName
が未定義かどうかを検出します。
ただし、グローバルundefined
が(ES5より前に)上書きされたり、別の値でシャドウされたりする可能性があることに注意してください。したがって、void
の方が好きです。これも短いです。
varName == null
これにより、varName
が未定義かnullかが検出されます。
!varName
これは、varName
が偽(未定義、null、0、空文字列、NaN、false)であるかどうかを検出します。