私は知っている、私はこのトピックをカバーするいくつかのスレッドがなければならないことを知っている。しかし、私は検索を使用し、私のニーズに合った答えを得られませんでした。だからここに行きます:
変数がnull
またはundefined
である場合、どうやって変数をチェックしますか。また、null
とundefined
の違いは何ですか?
==
と===
の違いは何ですか(Googleで「===」を検索するのは困難です)。
変数が
null
またはundefined
..の場合、どうすれば変数をチェックできますか。
変数null
は次のとおりです。
if (a === null)
// or
if (a == null) // but see note below
...しかし、a
がundefined
であれば、後者も当てはまります。
それはundefined
です:
if (typeof a === "undefined")
// or
if (a === undefined)
// or
if (a == undefined) // but see note below
...しかし、最後のものはあいまいです。 a
がnull
の場合も同様です。
さて、上記にもかかわらず、 いつもの これらをチェックする方法は、それらがfalseyであるという事実を使うことです:
if (!a) {
// `a` is falsey, which includes `undefined` and `null`
// (and `""`, and `0`, and `NaN`, and [of course] `false`)
}
これは仕様の ToBoolean で定義されています。
...
null
とundefined
の違いは何ですか?
それらは両方とも、何かが存在しないことを示すために通常使用される値です。 undefined
はもっと一般的なもので、他の値が割り当てられるまで変数のデフォルト値として、関数が呼び出されたときには提供されなかった関数引数の値として、そしてあなたが尋ねたときに得られる値として使われます。所有していないプロパティのオブジェクト。しかし、それはこれらの状況のすべてで明示的に使用することもできます。 (プロパティを持たないオブジェクトと値undefined
を持つプロパティを持つオブジェクトとの間には違いがあります。引数に対して値undefined
を持つ関数を呼び出すことと、その引数を完全にオフにすることとの間には違いがあります。)
null
はundefined
よりもわずかに具体的です。空白のオブジェクト参照です。もちろん、JavaScriptは大まかに型付けされていますが、JavaScriptが相互作用することのすべてが大まかに型付けされているわけではありません。ブラウザのDOMのようなAPIが空白のオブジェクト参照を必要とする場合は、null
ではなくundefined
を使用します。そして同様に、DOMのgetElementById
操作はオブジェクト参照を返します - 有効なもの(DOM要素が見つかった場合)またはnull
(見つからなかった場合)のいずれかです。
興味深いことに(あるいはそうではない)、それらは自分のタイプです。つまり、null
がNull型の唯一の値で、undefined
がUndefined型の唯一の値です。
"=="と "==="の違いは何ですか
唯一の違いは、==
は値を一致させるために型強制を行い、===
は一致しないことです。 "1" == 1
は"1"
に強制変換するので、たとえば1
はtrueです。しかし"1" === 1
はfalseです。型が一致しないからです。 ("1" !== 1
は真です。)===
の最初の(本当の)ステップは、「オペランドのタイプは同じですか?」です。答えが "no"の場合、結果はfalse
です。型が同じであれば、==
の動作とまったく同じです。
型強制は非常に複雑な規則を使用し、驚くべき結果をもたらすことがあります(例えば、"" == 0
はtrueです)。
仕様の詳細:
違いは微妙です。
JavaScriptでは、undefined
変数は、宣言されていない、または値が割り当てられていない変数です。例えばvar a;
を宣言したとしましょう。そしてa
は決して値を割り当てられなかったのでundefined
になります。
しかしa = null;
を代入すると、a
はnull
になります。 JavaScriptではnull
はオブジェクトです(信じられない場合はJavaScriptコンソールでtypeof null
を試してください)。これはnullが値であることを意味します(実際にはundefined
も値です)。
例:
var a;
typeof a; # => "undefined"
a = null;
typeof null; # => "object"
これは関数の引数には便利です。デフォルト値を使用することをお勧めしますが、許容できるものとしてnullを検討してください。その場合は、次のようにします。
function doSomething(first, second, optional) {
if (typeof optional === "undefined") {
optional = "three";
}
// do something
}
optional
パラメータを省略するとdoSomething(1, 2) then
optionalは"three"
文字列になりますが、doSomething(1, 2, null)
を渡すとオプションはnull
になります。
等しい==
および厳密に等しい===
コンパレータに関しては、最初のものは弱い型ですが、厳密に等しい場合は値の型もチェックします。これは0 == "0"
がtrueを返すことを意味します。数値は文字列ではないため、0 === "0"
はfalseを返します。
これらの演算子を使ってundefined
とnull
をチェックすることができます。例えば:
null === null # => true
undefined === undefined # => true
undefined === null # => false
undefined == null # => true
最後のケースは、変数が未定義であるかnullであるか、そしてそれ以外に何もないかをチェックすることができるので興味深いものです。
function test(val) {
return val == null;
}
test(null); # => true
test(undefined); # => true
仕様 は、これらの質問に対する完全な回答を得るための場所です。概要は次のとおりです。
x
には、次のことができます。===
を使用した直接比較によって、null
かどうかを確認してください。例:x === null
undefined
をチェックしてください:undefined
またはtypeof
との直接比較。 さまざまな理由で 、私はtypeof x === "undefined"
を好みます。==
を使用し、x == null
が厳密にあなたが望むことを意味するというやや難解な型強制規則に頼って、それがnull
とundefined
のどちらであるかをチェックしてください。==
と===
の基本的な違いは、オペランドが異なる型の場合、===
は常にfalse
を返すのに対し、==
は rules を使用して一方または両方のオペランドを同じ型に変換することです。オペランドが同じ型の場合(例えば、上記のtypeof
の比較のように両方とも文字列の場合)、==
と===
はまったく同じように動作します。もっと読む:
未定義
それは変数がまだ初期化されていないことを意味します。
例:
var x;
if(x){ //you can check like this
//code.
}
等しい(==)
値がデータ型と等しくないことだけを確認します。
例:
var x = true;
var y = new Boolean(true);
x == y ; //returns true
値だけをチェックするからです。
厳密に等しい(===)
値とデータ型が同じであることを確認します。
例:
var x = true;
var y = new Boolean(true);
x===y; //returns false.
データ型をチェックするので、xはプリミティブ型で、yはブールオブジェクトです。
Nullまたは未定義の変数をチェックする方法
変数が次のような有効な値を持っているかどうかを確認してください。
if(variable)
変数が含まれていない場合はtrueを返します。
(論理的な)チェックが否定(!)で、JSのnull
とundefined
の両方をキャプチャしたい場合は(ブラウザの種類によって結果が異なるため)、制限の少ない比較を使用してください。
var ItemID = Item.get_id();
if (ItemID != null)
{
//do stuff
}
これはnull
とundefined
の両方をキャプチャします
Null、null、未定義、0以外の検証用の4つすべての条件をチェックするための以下のコードを使用できます。このコード(!(!(variable)))はjavascriptとjqueryでのみ使用してください。
function myFunction() {
var data; //The Values can be like as null, blank, undefined, zero you can test
if(!(!(data)))
{
//If data has valid value
alert("data "+data);
}
else
{
//If data has null, blank, undefined, zero etc.
alert("data is "+data);
}
}
Ad1。null
は、undefined
の場合もあります のように、グローバルオブジェクトのプロパティの識別子ではありません。
let x; // undefined
let y=null; // null
let z=3; // has value
// 'w' // is undeclared
if(!x) console.log('x is null or undefined');
if(!y) console.log('y is null or undefined');
if(!z) console.log('z is null or undefined');
try { if(w) 0 } catch(e) { console.log('w is undeclared') }
// typeof not throw exception for undelared variabels
if(typeof w === 'undefined') console.log('w is undefined');
Ad 2. ===
は値と型をチェックします。 ==
は同じ型を必要とせず、(.valueOf()
と.toString()
を使って)比較の前に暗黙の変換を行います。ここにあなたはすべて( src )を持っています:
if の場合
== (その否定 != )
=== (その否定 !== )