[javascript] null과 undefined 및 ==와 ===의 차이에 대한 JavaScript 검사
-
그것이 있다면 어떻게 변수를 확인합니까
null
또는undefined
과의 차이 무엇null
하고undefined
? -
무엇 차이점은 무엇
==
과===
(그것은 “===”에 대한 구글 검색 어렵다)?
답변
그것이 있다면 어떻게 변수를 확인합니까
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
is 인 경우에도 마찬가지 입니다 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
, not 을 사용 undefined
합니다. 마찬가지로 DOM의 getElementById
작업은 유효한 객체 (DOM 요소를 찾은 경우) 또는 null
그렇지 않은 경우 개체 참조를 반환합니다 .
흥미롭게도 (아니든), 그들은 그들 자신의 유형입니다. 즉, null
Null 유형 undefined
의 유일한 값이고 정의되지 않은 유형의 유일한 값입니다.
“==”와 “===”의 차이점은 무엇입니까
그들 사이의 유일한 차이점 ==
은 값을 일치시키기 위해 강제 변환을 수행 한다는 것 ===
입니다. 예를 들어을 강제하기 "1" == 1
때문에 사실 입니다. 그러나 입니다 거짓 유형이 일치하지 않기 때문에. ( 사실이다.)의 첫 번째 (실제) 단계 이다 “피연산자의 유형은 동일합니까?” 대답이 “아니오”이면 결과는 입니다. 유형이 동일하면 정확하게 작동합니다."1"
1
"1" === 1
"1" !== 1
===
false
==
유형 강제는 매우 복잡한 규칙을 사용하며 놀라운 결과를 낳을 수 있습니다 (예 "" == 0
: 참).
사양에서 더 많은 것 :
답변
차이점은 미묘합니다.
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
"three"
doSomething(1, 2, null)
null
.
동일 ==
하고 엄격하게 동일한 ===
비교기의 경우 첫 번째는 약한 유형이며 엄격하게 동일한 값은 유형도 검사합니다. 그것은 그것이 0 == "0"
참 이 될 것이라는 것을 의미 합니다. 동안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"
.- 그 중 하나 여부를 확인
null
하고undefined
사용하여==
및 평균이하는 약간 난해한 유형 강제 변환 규칙에 의존x == null
정확하게 당신이 원하는 않습니다.
- 를
==
와===
피연산자의 유형이 다른 경우 기본적인 차이점 은 피연산자가===
항상 반환false
되는 동안 약간 직관적이지 않은 동작을 유발==
하는 규칙 을 사용하여 하나 또는 두 피연산자를 동일한 유형으로 변환 한다는 것입니다. 피연산자는 동일한 유형 인 경우 (모두 예와 같이 문자열이다 예typeof
상기 비교)==
와===
정확히 동일하게 작동한다.
더 많은 독서 :
- 앵거스 크롤의 진실, 평등 및 JavaScript
- Andrea Giammarchi의 JavaScript 강제 변환
- comp.lang.javascript FAQ : JavaScript 유형 변환
답변
변수가 null이거나 정의되지 않은 경우 어떻게 확인합니까
변수에 다음과 같은 유효한 값이 있는지 확인하십시오.
if(variable)
변수에 다음이 포함되어 있지 않으면 true를 반환합니다.
- 없는
- 찾으시는 주소가 없습니다
- 0
- 그릇된
- “”(빈 문자열)
- NaN
답변
찾으시는 주소가 없습니다
변수가 아직 초기화되지 않았 음을 의미합니다.
예 :
var x;
if(x){ //you can check like this
//code.
}
같음 (==)
점검 값만 datatype이 아닌지 확인하십시오.
예 :
var x = true;
var y = new Boolean(true);
x == y ; //returns true
value 만 검사하기 때문입니다.
엄격한 같음 (===)
값과 데이터 유형이 동일한 지 확인합니다.
예 :
var x = true;
var y = new Boolean(true);
x===y; //returns false.
데이터 유형을 검사하기 때문에 x는 기본 유형이고 y는 부울 객체입니다.
답변
광고 1. null
전역 객체의 속성에 대한 식별자 아니라, 같은 undefined
수 있습니다
광고 2. ===
확인 값과 유형. ==
망가 (사용하여 비교하기 전에 동일한 유형과 만든 암시 적 변환을 필요로 .valueOf()
하고 .toString()
). 여기에 모든 것이 있습니다 ( src ) :
만약
== (그것의 부정 ! = )
=== (그것의 부정 ! == )
답변
(논리적) 검사가 부정 (!)인지 확인하고 JS를 캡처 null
하고 undefined
(다른 브라우저에서 다른 결과를 얻을 수 있기 때문에) 덜 제한적인 비교를 사용하십시오.
var ItemID = Item.get_id();
if (ItemID != null)
{
//do stuff
}
이 모두를 캡처 null
하고undefined