2452

変数がundefinedまたはかどうかを判断するにはどうすればよいnullですか?

私のコードは次のとおりです。

var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
  // DO SOMETHING
};
<div id="esd-names">
  <div id="name"></div>
</div>

しかし、これを行うと、JavaScript インタープリターが実行を停止します。

4

33 に答える 33

3287

これを行うには、抽象等価演算子の性質を使用できます。

if (variable == null){
    // your code here.
}

が true であるため、上記のコードは と の両方をnull == undefinedキャッチします。nullundefined

于 2010-04-15T18:14:35.087 に答える
1251

同時にキャッチする標準的な方法は次のnullとおりです。undefined

if (variable == null) {
     // do something 
}

--これは、より明示的ではあるが簡潔ではないものと 100% 同等です。

if (variable === undefined || variable === null) {
     // do something 
}

プロのJSを書いていると、型の等価性や==vs===の振る舞いを理解するのは当然のことです。したがって、 を使用==して比較するだけnullです。


再編集

の使用を示唆するコメントtypeofは単に間違っています。はい、変数が存在しない場合、上記の私の解決策は ReferenceError を引き起こします。これは良いことです。この ReferenceError は望ましいものです。他の言語でコンパイラ エラーが発生するのと同じように、コードを出荷する前に間違いを見つけて修正するのに役立ちます。制御できない入力を扱う場合はtry/を使用してください。catch

コード内で宣言されていない変数への参照を含めないでください。

于 2014-01-22T03:01:31.737 に答える
275

上記の回答を組み合わせると、最も完全な回答は次のようになります。

if( typeof variable === 'undefined' || variable === null ){
    // Do stuff
}

これは、宣言されていないか宣言されていて、明示的に null または未定義に設定されている変数に対して機能するはずです。ブール式は、実際の非 null 値を持つ宣言された変数に対して false と評価される必要があります。

于 2013-10-11T17:02:17.463 に答える
194
if (variable == null) {
    // Do stuff, will only match null or undefined, this won't match false
}
于 2010-04-15T18:25:33.427 に答える
104
if (typeof EmpName != 'undefined' && EmpName) {

値が次の場合に true と評価されます。

  • ヌル

  • 未定義

  • NaN

  • 空文字列 ("")

  • 0

  • 間違い

于 2015-05-07T07:24:01.147 に答える
33

jQueryattr()関数は、空の文字列または実際の値のいずれかを返します (または ではありませんnull) undefinedundefinedそれが返されるのは、セレクターが要素を返さなかったときだけです。

そのため、空の文字列に対してテストしたい場合があります。または、空白の文字列、null および undefined は false-y であるため、次のようにすることもできます。

if (!EmpName) { //do something }
于 2010-04-15T18:20:06.900 に答える
13

JavaScriptでは、私の知る限り、以下のようにundefinednullまたは空の変数をチェックできます。

if (variable === undefined){
}

if (variable === null){
}

if (variable === ''){
}

すべての条件を確認してください:

if(variable === undefined || variable === null || variable === ''){
}
于 2019-11-07T04:39:50.223 に答える
10

オブジェクトがnullかどうかをチェックするという、この問題が発生しました。
私は単にこれを使用します:

if (object) {
    // Your code
}

例えば:

if (document.getElementById("enterJob")) {
    document.getElementById("enterJob").className += ' current';
}
于 2013-10-15T16:44:32.757 に答える
6

jQuery チェック要素が null ではありません:

var dvElement = $('#dvElement');

if (dvElement.length  > 0) {
    // Do something
}
else{
    // Else do something else
}
于 2015-03-04T17:10:20.563 に答える
3

変数が null または未定義かどうかをテストするには、次のコードを使用します。

    if(typeof sVal === 'undefined' || sVal === null || sVal === ''){
      console.log('variable is undefined or null');
    }
于 2016-03-03T04:57:23.650 に答える
0

特別な値 null は空のオブジェクト参照と見なされるため、typeof null を呼び出すと「オブジェクト」の値が返されます。バージョン 5 までの Safari とバージョン 7 までの Chrome には、正規表現で typeof を呼び出すと「関数」が返されるのに対し、他のすべてのブラウザーは「オブジェクト」を返すという癖があります。

于 2014-03-06T11:24:28.123 に答える
0
var x;
if (x === undefined) {
    alert ("only declared, but not defined.")
};
if (typeof y === "undefined") {
    alert ("not even declared.")
};

2番目のもののみを使用できます。定義と宣言の両方をチェックするためです

于 2015-08-15T07:18:31.183 に答える
-1

Best way:

if(typeof variable==='undefined' || variable===null) {

/* do your stuff */
}
于 2016-05-25T11:55:10.550 に答える
-1

私は10年遅れていることを知っています。しかし、誰かが簡単な方法を必要とする場合に備えて、ここに私の答えを残しておきます。

プロジェクトにLodashをインストールすると、これらの状況で役立つヘルパー関数が役立つ可能性があります。

ES6 モジュールを使用すると、インポートは次のようになります。

import isNull from 'lodash/isNull';

import isUndefined from 'lodash/isUndefined';

import isNil from 'lodash/isNil';

使用する関数のみをインポートするとよいでしょう。

Lodash のisNullは、値が null かどうかをチェックします。

const value = null;
 
 if(isNull(value)) {
    // do something if null
 }

lodash のisUndefinedは、値が未定義かどうかをチェックします。

const value = undefined;

if(isUndefined(value)) {
   // do something if undefined.
}

isNil値が nullまたは未定義かどうかを確認します。undefined と null の両方をチェックするため、私は他の 2 つの方法よりもこの方法を好みます。

于 2020-11-18T16:35:06.597 に答える