それはだかどうかはどのように変数をチェックします
null
か、undefined
との違いは何であるnull
とはundefined
?違いは何ですか
==
と===
(Googleで "==="を検索するのは難しいですか?
それはだかどうかはどのように変数をチェックしますnull
か、undefined
との違いは何であるnull
とはundefined
?
違いは何ですか ==
と===
(Googleで "==="を検索するのは難しいですか?
回答:
変数をチェックするにはどうすれば
null
よいundefined
ですか...
変数ですnull
:
if (a === null)
// or
if (a == null) // but see note below
...しかし、場合、後者の意志はまた真で注意a
ISundefined
。
それはundefined
:
if (typeof a === "undefined")
// or
if (a === undefined)
// or
if (a == undefined) // but see note below
...しかし、繰り返しになりますが、最後のものはあいまいです。あれば、それもまた真なりa
ですnull
。
さて、上記にもかかわらず、 それらをチェックする通常の方法は、それらが誤っているという事実を使用することです:
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"
強制されるため、trueになり1
ます。しかし、"1" === 1
ある偽型が一致しないため、。("1" !== 1
trueです。)の最初の(実際の)ステップ===
は、「オペランドのタイプは同じですか?」です。答えが「いいえ」の場合、結果はfalse
です。タイプが同じである場合、それは正確に何をするか==
です。
型強制は非常に複雑なルールを使用しており、驚くべき結果をもたらす可能性があります(たとえば、"" == 0
true)。
仕様の詳細:
if (a) { ... }
「a
真実である場合」を意味します。「真実」は、非ゼロ、非ヌル、非未定義、非偽、非空ストリングの値です。:-)
null
はないことは事実であり、「オブジェクトなし」を意味するオブジェクト参照です。それは(例えば、彼らはオブジェクト参照を提供したときにホストが提供するインタフェースを使用していますが、提供するものを持っていないものだから、これは重要であるとき、その親に最後の要素である、またはそのIDでどの要素がない場合)。ホストがこれに使用するテクノロジーは、JavaScriptが変数/プロパティタイプに関するものほど柔軟ではない可能性があるため、(とは対照的に)obj ref が必要でした。node.nextSibling
node
getElementById
null
undefined
typeof null
「オブジェクト」を返すことには意味があります。間違いなくとは異なる値を返す必要があるため、意味のある他の唯一の値は「null」typeof undefined
です。nullはnullオブジェクト参照を表します。これは、少なくとも、それを保持する変数が何らかのタイプの「オブジェクト」用であることを意味します。それが間違いだったら、それは良い間違いだった。とにかく、答えに関しては、特にデバッグの目的で、クロスウィンドウスクリプティング中のundefined
!== に関するヒントundefined
を知っておくと役に立ちます。
違いは微妙です。
JavaScriptでは、undefined
変数は宣言されていない、または値が割り当てられていない変数です。var a;
たとえば、次のa
ように宣言するとしますundefined
。これは、値が割り当てられていないためです。
あなたが割り当てた場合でもa = null;
、その後a
、今になりますnull
。JavaScript null
ではオブジェクトです(typeof null
信じられない場合はJavaScriptコンソールで試してください)。つまり、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)
はoptionalになりますnull
。
等しいとして==
厳密に等しい===
厳密な値のタイプについてもチェックを等しくしながら、コンパレータ、最初のものは、弱いタイプです。つまり、0 == "0"
trueが返されます。0 === "0"
数値は文字列ではないため、while は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
との直接の比較:2つの基本的な方法のいずれかによって、undefined
またはtypeof
。以下のために様々な理由、私は好みますtypeof x === "undefined"
。null
し、undefined
使用することによって==
、平均がいることを少し難解な型強制規則に頼ってx == null
正確に何をしたいん。==
とは、===
オペランドのタイプが異なる場合は、ということです===
常に返されfalse
ながら==
使用して、同じ型に一方または両方のオペランドを変換するルールをリードいくつかのわずか直感的行動にいること。オペランドが同じ型(たとえば、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はブールオブジェクトです。
別のロジックでお試しください。not null、空白、未定義、ゼロでないなど、検証の4つすべての条件をチェックするために次のコードを使用できます。JavaScriptとjqueryでこのコード(!(!(variable)))を使用するだけです。
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);
}
}
==
とは===
よくされてここで説明します。