web-dev-qa-db-ja.com

変数が 'undefined'か 'null'かを判断する方法

変数がundefinednullのどちらであるかをどうやって判断するのですか?私のコードは次のとおりです。

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

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

1830
sadmicrowave

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

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

null == undefinedはtrueなので、上記のコードはnullundefinedの両方を捕捉します。

2518
Sarfraz

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

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

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

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

プロのJSを書くとき、 型の同等性と===== の振る舞いが理解されていることは当然のことと考えられます。したがって、私たちは==を使い、nullとだけ比較します。


もう一度編集

typeofの使用を示唆するコメントは、単にwrong。です。_はい、変数が存在しない場合、上記の解決策はReferenceErrorを引き起こします。 これは良いことです。このReferenceErrorは望ましいことです。他の言語のコンパイラエラーと同じように、コードを出荷する前に、間違いを見つけて修正するのに役立ちます。

あなたのコードの中で宣言されていない変数への参照を持ってはいけません。

1021

上記の答えをまとめると、最も完全な答えは次のようになります。

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

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

189
jkindwall
if (variable == null) {
    // Do stuff, will only match null or undefined, this won't match false
}
180
user216441
if (typeof EmpName != 'undefined' && EmpName) {

値がそうでない場合、trueと評価されます。

  • ヌル

  • 未定義

  • NaN

  • 空の文字列( "")

  • 0

  • false

83
Thamaraiselvam

jQueryのattr()関数は空白の文字列または実際の値を返します(nullundefinedは決して返しません)。 undefinedが返されるのは、セレクタが要素を返さなかったときだけです。

だからあなたは空白の文字列に対してテストすることができます。あるいは、空白文字列、nullおよびundefinedはfalse-yであるため、これを実行するだけで済みます。

if (!EmpName) { //do something }
22
Chetan Sastry

私はこれのために私自身の関数を書くようになった。 javascriptは変です

文字通り何にでも使えます。 (これはまた、変数に使用可能な values が含まれているかどうかもチェックします。しかし、この情報は通常必要なので投稿する価値があると思います)。メモを残すことを検討してください。

function empty(v) {
    let type = typeof v;
    if (type === 'undefined') {
        return true;
    }
    if (type === 'boolean') {
        return !v;
    }
    if (v === null) {
        return true;
    }
    if (v === undefined) {
        return true;
    }
    if (v instanceof Array) {
        if (v.length < 1) {
            return true;
        }
    } else if (type === 'string') {
        if (v.length < 1) {
            return true;
        }
        if (v === '0') {
            return true;
        }
    } else if (type === 'object') {
        if (Object.keys(v).length < 1) {
            return true;
        }
    } else if (type === 'number') {
        if (v === 0) {
            return true;
        }
    }
    return false;
}

TypeScript互換です。


編集します。この関数は 正確に PHPのような同じことをするべきです empty() functionRETURN VALUESを参照)

undefinednullfalse00.0"0"{}[]を空と見なします。

"0.0"NaN" "trueは空でないと見なされます。

9
Blauhirn

チェックしたい変数がグローバルであれば、

if (window.yourVarName) {
    // Your code here
}

yourVarName変数が存在しなくても、このチェック方法でエラーは発生しません。

例:私のブラウザがHistory APIをサポートしているかどうかを知りたい

if (window.history) {
    history.back();
}

この仕組み

windowは、すべてのグローバル変数をそのプロパティとして持つオブジェクトです。JavaScriptでは、存在しないオブジェクトプロパティにアクセスしようとするのは合法です。 historyが存在しない場合、window.historyundefinedを返します。 undefinedは誤っているため、if(undefined){}ブロック内のコードは実行されません。

9
DenisS

jQuery を使用しているので、単一の関数を使用して、変数が未定義であるか、またはその値がNULLであるかを判断できます。

var s; // undefined
jQuery.isEmptyObject(s); // will return true;

s = null; // defined as null
jQuery.isEmptyObject(s); // will return true;

// usage
if(jQuery.isEmptyObject(s)){
    alert('Either variable: s is undefined or its value is null');
}else{
     alert('variable: s has value ' + s);
}

s = 'something'; // defined with some value
jQuery.isEmptyObject(s); // will return false;
6
Angelin Nadar

私はこの問題、つまりオブジェクトがnullかどうかをチェックしたばかりです。
私は単にこれを使います。

if (object) { Somecode}

すなわち.

if (document.getElementById("enterJob")) 
  document.getElementById("enterJob").className += ' current';
4
Welshboy

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

var dvElement = $('#dvElement');

if (dvElement.length  > 0) {
    //do something
}
else{
    //else do something else
}
3
Kapil

以下の解決策では:

const getType = (val) => typeof val === 'undefined' || !val ? null : typeof val;
const isDeepEqual = (a, b) => getType(a) === getType(b);

console.log(isDeepEqual(1, 1)); // true
console.log(isDeepEqual(null, null)); // true
console.log(isDeepEqual([], [])); // true
console.log(isDeepEqual(1, "1")); // false
etc...

私は以下をチェックすることができます:

  • ヌル
  • undefined
  • NaN
  • 空の
  • 文字列( "")
  • false
2
Tony Tai Nguyen

私は(void 0)を使用して、クロムコンソール上でこのテストを実行すると、未定義をチェックすることができます

var c;
undefined
if(c === void 0)alert();
// output =  undefined
var c = 1;
// output =  undefined
if(c === void 0)alert();
// output =   undefined
// check c value  c
// output =  1
if(c === void 0)alert();
// output =  undefined
c = undefined;
// output =  undefined
if(c === void 0)alert();
// output =   undefined
1
suhail

最短で最も簡単な:

if(!EmpName ){
 // DO SOMETHING
}

empNameが次の場合、これはtrueと評価されます。

  • ヌル
  • undefined
  • ナン
  • 空の
  • 文字列( "")
  • false
1
userPlus

確認する最も簡単な方法は次のとおりです。

if(!variable) {
  // If the variable is null or undefined then execution of code will enter here.
}
1
M. Arnold
var i;

if(i === null || typeof i === 'undefined'){
console.log(i,'i is undefined or null')
}else{
console.log(i,'i has some value')
}
1
KARTHIKEYAN.A

最良の方法:

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

/* do your stuff */
}
1
Nishanth Matha
(null == undefined)  // true

(null === undefined) // false

===は型と値の両方をチェックするからです。両者の種類は異なりますが、値は同じです。

0
Franklin Pious

単純に以下を使用できます(これを行う方法はもっと短いと思いますが、これにより視覚的に観察しやすくなります。少なくともコードを見ている人にとってはそうです)。

if (x === null || x === undefined) {
 // add your response code here etc.

}

0
agc

単純にtypeofを使用して、値が未定義であるかnullであるかを確認できます。

if(typeof value == 'undefined'){
0
gideon