回答:
これを行うには、抽象等価演算子の品質を使用できます。
if (variable == null){
// your code here.
}
null == undefined
がtrueであるため、上記のコードはとの両方をキャッチnull
しundefined
ます。
const y = undefined; y == null;
返されるはずですtrue
y
定数を宣言しましたが、比較でabc
はありません(ではありませんy
)。ChromeとFirefoxでテストy
しconsole.log(y == null);
たところtrue
、結果が出ました。エラーが発生した場合は=
、比較==
ではなく代入演算子を使用しようとしたconst
可能性があります。これは、再割り当てできないため、エラーを返すことに意味があります。
null
またはundefined
変数が等しい場合に合格するかどうかのテストを期待します0
か?問題は真実の値をテストすることではなく、null
またはを明示的にテストすることundefined
です。
キャッチするnull
とundefined
同時に標準的な方法はこれです:
if (variable == null) {
// do something
}
-これは、より明示的ですが簡潔ではありませんが、100%同等です。
if (variable === undefined || variable === null) {
// do something
}
プロのJSを書くとき、当然のことながらその型の等価性と==
vs の動作===
が理解されます。したがって、使用==
して比較するのはだけnull
です。
の使用を示唆するコメントtypeof
は単に間違っています。はい、上記の私の解決策では、変数が存在しない場合にReferenceErrorが発生します。これは良いことです。このReferenceErrorは望ましいものです。他の言語でのコンパイラエラーのように、コードを出荷する前に間違いを見つけて修正するのに役立ちます。try
/を使用するcatch
と、制御できない入力で作業している場合。
コード内で宣言されていない変数への参照があってはなりません。
!==
代わりに書いたからです!=
。
undefined
と宣言されていますが、初期化されていない変数と同じです。つまりvar someVar;
、引数は実際には成り立ちません
上記の回答を組み合わせると、最も完全な回答は次のようになります。
if( typeof variable === 'undefined' || variable === null ){
// Do stuff
}
これは、宣言されていない、または宣言されており、明示的にnullまたは未定義に設定されている変数に対して機能します。ブール式は、実際のnull以外の値を持つ宣言された変数に対してfalseと評価される必要があります。
typeof
が関数ではなく演算子であることを認識しているので、括弧は必要ありませんが、それでも括弧はありがたいです。
variable == null
if (variable == null) {
// Do stuff, will only match null or undefined, this won't match false
}
undefined
と等しいと評価されnull
ます。
/*jshint eqnull:true */
、あなたのJS文書または関数の先頭に、そしてJSHintはあなたの用途に関する警告を停止します== null
。
==
は、破損していることを明示的に示している参照を私に示すことができます。if(variable == null)
この回答の強制力は、私には完全に理にかなっています...
if (typeof EmpName != 'undefined' && EmpName) {
値が次の値でない場合、trueと評価されます。
ヌル
未定義
NaN
空の文字列( "")
0
偽
if (EmpName)
です。もしそれundefined
がもうだめだろうなら。
var EmpName; if (EmpName)
。変数が定義されているが値が割り当てられていない場合。
jQueryのattr()
空白文字列または実際の値(決してどちらかの機能が戻りますnull
かundefined
)。返されるのundefined
は、セレクターが要素を返さなかったときだけです。
したがって、空の文字列に対してテストしたい場合があります。または、空の文字列、null、undefinedはfalse-yなので、次のようにすることができます。
if (!EmpName) { //do something }
ReferenceError: EmpName is not defined
undefined
ますが、要素に属性が存在しない場合はjQueryが返されます(答えのように、セレクターに一致する要素がない場合だけではありません)。たとえば、img
with no no for src
returnundefined
$('img').attr('src');
このために自分で関数を書くようになりました。JavaScriptは奇妙です。
文字通り何でも使えます。(これにより、変数に使用可能な値が含まれているかどうかもチェックされます。ただし、この情報も通常必要なので、投稿する価値があると思います)。メモを残すことを検討してください。
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()
ます(RETURN VALUES
)。
考えてundefined
、null
、false
、0
、0.0
、"0"
{}
、[]
空のよう。
"0.0"
、NaN
、" "
、true
空ではないと考えられています。
{ }
。これは一般的で愚かな言語の問題ですが、私はそれを忘れていました。すべての検索で、未定義のnull値、または緩やかな等価比較(==)に対する回答が表示されますが、厳密な等価(===)または同等のものは表示されません。そして、ページの一番下(私が賛成する前)にある-1のランクの答えは、私を逃れた答えです。 Object.keys( obj ).length < 1
または=== 0、それが-1になることはないと仮定します。とにかく、0に賛成です。:p
==
を===
ここに変更する必要があります。これは妥当な機能です。
チェックしたい変数がグローバルの場合、
if (window.yourVarName) {
// Your code here
}
このチェック方法では、yourVarName
変数が存在しなくてもエラーはスローされません。
if (window.history) {
history.back();
}
window
プロパティとしてすべてのグローバル変数を保持するオブジェクトです。JavaScriptでは、存在しないオブジェクトプロパティにアクセスすることは合法です。場合は、history
その後、存在しないwindow.history
リターンをundefined
。undefined
falseなので、if(undefined){}
ブロック内のコードは実行されません。
null
かundefined
、またあなたのJavaScriptがブラウザ(つまり、Node.jsの中)外に実行されている場合、それは動作します。また0
、に設定されているグローバル、false
または''
宣言されていないグローバルと同じグローバル、または通常は問題ないまたはundefined
またはも扱いますnull
。
私はこの問題、つまりオブジェクトがnullであるかどうかを確認したところです。
私はこれを単に使用します:
if (object) {
// Your code
}
例えば:
if (document.getElementById("enterJob")) {
document.getElementById("enterJob").className += ' current';
}
あなたが使用しているのでjQueryのを、あなたは変数が定義されていないか、その値は、単一の関数を使用してヌルをあるかどうかを判断することができます。
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;
ReferenceError: s is not defined
最初の例について。
確認する最も簡単な方法は次のとおりです。
if(!variable) {
// If the variable is null or undefined then execution of code will enter here.
}
false
、これは望ましくない可能性があります。
undefined
、null
および空の文字列のようないくつかの他のもの、+0、-0 NaN
とfalse
を介して取得。!
演算子はオペランドをここに強制しますvariable
- ここから-ブール値へ:ecma-international.org/ecma-262/#sec-toboolean
以下のソリューションで:
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...
次のことを確認できます。
変数がnullまたは未定義かどうかをテストするには、以下のコードを使用します。
if(typeof sVal === 'undefined' || sVal === null || sVal === ''){
console.log('variable is undefined or null');
}
typeof
との比較undefined
まっすぐではなく文字列として。これは機能しますが、余分な演算子は効果的になり、より幅広にしています。
このテストはChromeコンソールで実行します。(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
これを見てみましょう
let apple; // Only declare the variable as apple
alert(apple); // undefined
上記では、変数はとしてのみ宣言されていapple
ます。この場合、メソッドを呼び出すalert
と未定義と表示されます。
let apple = null; /* Declare the variable as apple and initialized but the value is null */
alert(apple); // null
2番目の変数ではnullが表示されます。 apple
値のます。
したがって、値が未定義であるかnullであるかを確認できます。
if(apple !== undefined || apple !== null) {
// Can use variable without any error
}
最良の方法:
if(typeof variable==='undefined' || variable===null) {
/* do your stuff */
}
(null == undefined) // true
(null === undefined) // false
なぜなら===はタイプと値の両方をチェックするからです。両方のタイプは異なりますが、値は同じです。
var i;
if (i === null || typeof i === 'undefined') {
console.log(i, 'i is undefined or null')
}
else {
console.log(i, 'i has some value')
}
typeof
生成されることはありません。また、場合既に真であるので、第二のブールは、それが働いた場合でも、冗長になります。undefined
'undefined'
i == null
i
undefined
foo == null
チェックは、トリックを行うと最短の方法で「未定義またはnull」のケースを解決する必要があります。(「fooは宣言されていません」のケースを考慮していません。)しかし、(ベストプラクティスとして)3つのイコールを使用していた人々は、それを受け入れない可能性があります。eqeqeqまたはtriple-equalsを見てください eslintとtslintのルール...
変数がそうであるundefined
かnull
個別にチェックするときの明示的なアプローチは、この場合に適用する必要があり、トピックへの私の貢献(現時点では27の非否定的な回答!)は、void 0
チェックを実行するための短く安全な方法として使用することですためにundefined
。
foo === undefined
undefinedは予約語ではなく、シャドウ(MDN)できるため、使用は安全ではありません。typeof === 'undefined'
チェックの使用は安全ですが、foo-is-undeclaredのケースを気にしない場合は、次のアプローチを使用できます。
if (foo === void 0 || foo === null) { ... }
それをチェックする関数を作成した場合:
export function isEmpty (v) {
if (typeof v === "undefined") {
return true;
}
if (v === null) {
return true;
}
if (typeof v === "object" && Object.keys(v).length === 0) {
return true;
}
if (Array.isArray(v) && v.length === 0) {
return true;
}
if (typeof v === "string" && v.trim().length === 0) {
return true;
}
return false;
}
typeof nullを呼び出すと、「object」の値が返されます。これは、特別な値nullは空のオブジェクト参照と見なされるためです。Safariからバージョン5までとChromeからバージョン7までには、正規表現でtypeofを呼び出すと「関数」が返され、他のすべてのブラウザーでは「オブジェクト」が返されるという癖があります。
これらの2つの条件をテストする最良の/安全な方法は、値を文字列にキャストすることです。
var EmpName = $("div#esd-names div#name").attr('class');
// Undefined check
if (Object.prototype.toString.call(EmpName) === '[object Undefined]'){
// Do something with your code
}
// Nullcheck
if (Object.prototype.toString.call(EmpName) === '[object Null]'){
// Do something with your code
}
typeofを使用するだけで、値が未定義かnullかどうかを確認できます。
if(typeof value == 'undefined'){
null
。何年も前に正しい完全な回答が与えられた質問に対して、なぜ新しい正しくない回答が提供されるのか理解できません。現在の答えはどういうわけか不十分だと思いますか?
if(x==null)
JavaScriptでは悪い考えです。で判断"=="
-予期しない型強制を引き起こす可能性があり、CoffeeScriptで読み取ることができないため、条件判断で「==」または「!=」を使用しないでください
。
if(x)
より良いでしょうが、0と ""に注意してください。これはfalseとして扱われ、equalメソッドは"!= null"
is trueではありません。
JavaScriptのベストプラクティスをご覧ください。
==
と比較することnull
で引くの標準的な方法とJSインチ 型強制はこの特定のコンテキストではリスクではなく、実際に両方を同時にキャッチするという目標を達成するために利用されています。何年も前に十分に解決された質問に対して、正しくない誤解を招く答えを提供する前に、言語の操作にもっと時間をかけてください。null
undefined
==
null
undefined