0

重複の可能性:
javascript 未定義の比較

これはいつも私を混乱させ、決定的な答えを見つけることはできません。また、どちらかを試しても、どちらか一方が機能するか、または他方よりもうまく機能することを最終的に示しているようには見えません.

私は人々がしているのを見ます:

typeof system_obj.alpha !== 'undefined'
!typeof system_obj.alpha == 'undefined'
typeof system_obj.alpha != 'undefined'

しかし、いずれの場合でも、私は常に偽陽性になってしまいます。だから私の質問は、文字列がnullではないか未定義ではないかどうかを知りたいとき、または型が何かではないことを確認したい場合、それに基づいて何かをすることです。

if(typeof system_obj.alpha == 'undefined'){/*ignore*/}else
{
  //code
}

とにかくやってしまうようなif-elseロジックを使用せずに、どうすればそれを適切に行うことができますか

4

2 に答える 2

1

次の手順を実行してください。

if (typeof systemObj !== 'undefined') {
  ... do something
}

オブジェクトが真実である(そして未定義、null、falseなどではない)ことをテストするには、次のようにします。

if (systemObj) {
    ... do something (will throw error is object does not exist)
}

上記の例のように、次のことができます。

 if (systemObj.hasOwnProperty('alpha') && systemObj.alpha) {
     ... do something
 }

これにより、アルファが存在し、偽ではないことを確認します。

質問の範囲外では、次のことをお勧めします。

  • キャメルケースを使用してください。

  • そのようにifステートメントを記述しないでください。

  • より良いJavaScriptを作成する方法については、http://addyosmani.com/blog/または同様のリソースを確認してください。

于 2013-01-24T21:41:58.613 に答える
1

system_obj.alpha === void 0変数が未定義かどうかを確認する最速の方法であり、信頼性があります。これが比較です。

http://jsperf.com/typeof-vs-undefined-check/3

于 2013-01-24T21:20:01.533 に答える