変数が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インタプリタが実行を停止します。
これを行うには、 抽象等価演算子 の品質を使用できます。
if (variable == null){
// your code here.
}
null == undefined
はtrueなので、上記のコードはnull
とundefined
の両方を捕捉します。
null
とundefined
を同時にキャッチする標準的な方法は次のとおりです。
if (variable == null) {
// do something
}
- これは、より明確ではあるが簡潔ではないものと100%同等です。
if (variable === undefined || variable === null) {
// do something
}
プロのJSを書くとき、 型の同等性と==
対===
の振る舞いが理解されていることは当然のことと考えられます。したがって、私たちは==
を使い、null
とだけ比較します。
typeof
の使用を示唆するコメントは、単にwrong。です。_はい、変数が存在しない場合、上記の解決策はReferenceErrorを引き起こします。 これは良いことです。このReferenceErrorは望ましいことです。他の言語のコンパイラエラーと同じように、コードを出荷する前に、間違いを見つけて修正するのに役立ちます。
あなたのコードの中で宣言されていない変数への参照を持ってはいけません。
上記の答えをまとめると、最も完全な答えは次のようになります。
if( typeof variable === 'undefined' || variable === null ){
// Do stuff
}
これは、宣言されていないか、宣言されていて、明示的にnullまたは未定義に設定されているすべての変数に対して機能します。ブール式は、実際にnull以外の値を持つ宣言された変数に対してはfalseと評価されるべきです。
if (variable == null) {
// Do stuff, will only match null or undefined, this won't match false
}
if (typeof EmpName != 'undefined' && EmpName) {
値がそうでない場合、trueと評価されます。
ヌル
未定義
NaN
空の文字列( "")
0
false
jQueryのattr()
関数は空白の文字列または実際の値を返します(null
やundefined
は決して返しません)。 undefined
が返されるのは、セレクタが要素を返さなかったときだけです。
だからあなたは空白の文字列に対してテストすることができます。あるいは、空白文字列、nullおよびundefinedはfalse-yであるため、これを実行するだけで済みます。
if (!EmpName) { //do something }
私はこれのために私自身の関数を書くようになった。 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()
function (RETURN VALUES
を参照)
undefined
、null
、false
、0
、0.0
、"0"
、{}
、[]
を空と見なします。
"0.0"
、NaN
、" "
、true
は空でないと見なされます。
チェックしたい変数がグローバルであれば、
if (window.yourVarName) {
// Your code here
}
yourVarName
変数が存在しなくても、このチェック方法でエラーは発生しません。
if (window.history) {
history.back();
}
window
は、すべてのグローバル変数をそのプロパティとして持つオブジェクトです。JavaScriptでは、存在しないオブジェクトプロパティにアクセスしようとするのは合法です。 history
が存在しない場合、window.history
はundefined
を返します。 undefined
は誤っているため、if(undefined){}
ブロック内のコードは実行されません。
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;
私はこの問題、つまりオブジェクトがnullかどうかをチェックしたばかりです。
私は単にこれを使います。
if (object) { Somecode}
すなわち.
if (document.getElementById("enterJob"))
document.getElementById("enterJob").className += ' current';
jQueryチェック要素がnullではありません
var dvElement = $('#dvElement');
if (dvElement.length > 0) {
//do something
}
else{
//else do something else
}
以下の解決策では:
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...
私は以下をチェックすることができます:
私は(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
最短で最も簡単な:
if(!EmpName ){
// DO SOMETHING
}
empNameが次の場合、これはtrueと評価されます。
確認する最も簡単な方法は次のとおりです。
if(!variable) {
// If the variable is null or undefined then execution of code will enter here.
}
var i;
if(i === null || typeof i === 'undefined'){
console.log(i,'i is undefined or null')
}else{
console.log(i,'i has some value')
}
最良の方法:
if(typeof variable==='undefined' || variable===null) {
/* do your stuff */
}
(null == undefined) // true
(null === undefined) // false
===は型と値の両方をチェックするからです。両者の種類は異なりますが、値は同じです。
単純に以下を使用できます(これを行う方法はもっと短いと思いますが、これにより視覚的に観察しやすくなります。少なくともコードを見ている人にとってはそうです)。
if (x === null || x === undefined) {
// add your response code here etc.
}
単純にtypeofを使用して、値が未定義であるかnullであるかを確認できます。
if(typeof value == 'undefined'){