[javascript] null과 undefined 및 ==와 ===의 차이에 대한 JavaScript 검사

  1. 그것이 있다면 어떻게 변수를 확인합니까 null또는 undefined과의 차이 무엇 null하고 undefined?

  2. 무엇 차이점은 무엇 =====(그것은 “===”에 대한 구글 검색 어렵다)?



답변

그것이 있다면 어떻게 변수를 확인합니까 nullundefined

변수입니다 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

… 다시 말하지만 마지막 것은 모호합니다. ais 인 경우에도 마찬가지 입니다 null.

위의 내용에도 불구하고, 그것들을 확인 하는 일반적인 방법은 그들이 거짓 이라는 사실을 사용하는 것입니다 .

if (!a) {
    // `a` is falsey, which includes `undefined` and `null`
    // (and `""`, and `0`, and `NaN`, and [of course] `false`)
}

이것은 스펙에서 ToBoolean 에 의해 정의됩니다 .

… 그리고 사이의 차이 무엇 nullundefined?

둘 다 일반적으로 무언가가 없음을 나타내는 데 사용됩니다. undefined함수가 호출 될 때 제공되지 않은 함수 인수의 값과 객체를 요청할 때 얻는 값으로 다른 값이 할당 될 때까지 변수의 기본값으로 사용되는보다 일반적인 것입니다. 속성이 없습니다. 그러나 이러한 모든 상황에서 명시 적으로 사용될 수도 있습니다. (속성이없는 객체와 값이있는 객체를 갖는 객체 undefined에는 차이가 undefined있습니다. 인수 값 을 가진 함수를 호출하는 것과 그 인수를 완전히 끄는 것 사이에는 차이가 있습니다.)

null다음보다 약간 더 구체적 undefined입니다. 빈 개체 참조입니다. 물론 JavaScript는 느슨하게 입력되었지만 JavaScript와 상호 작용하는 모든 항목이 느슨하게 입력 된 것은 아닙니다. 브라우저의 DOM과 같은 API가 비어있는 객체 참조가 필요한 경우 null, not 을 사용 undefined합니다. 마찬가지로 DOM의 getElementById작업은 유효한 객체 (DOM 요소를 찾은 경우) 또는 null그렇지 않은 경우 개체 참조를 반환합니다 .

흥미롭게도 (아니든), 그들은 그들 자신의 유형입니다. 즉, nullNull 유형 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를 돌려줍니다.

당신은 사이를 점검하기 위해 이러한 연산자를 사용할 수 있습니다 . 예를 들면 다음과 같습니다.undefinednull

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


답변

스펙 은 이러한 질문에 대한 완전한 답변을 얻을 수있는 곳입니다. 요약은 다음과 같습니다.

  1. 변수의 x경우 다음을 수행 할 수 있습니다.
    • null사용하여 직접 비교하여 확인하십시오 ===. 예:x === null
    • undefined직접 비교 undefined또는 와의 두 가지 기본 방법 중 하나 인지 확인하십시오 typeof. 들어 여러 가지 이유로 , 나는 좋아한다 typeof x === "undefined".
    • 그 중 하나 여부를 확인 null하고 undefined사용하여 ==및 평균이하는 약간 난해한 유형 강제 변환 규칙에 의존 x == null정확하게 당신이 원하는 않습니다.
  2. =====피연산자의 유형이 다른 경우 기본적인 차이점 은 피연산자가 ===항상 반환 false되는 동안 약간 직관적이지 않은 동작을 유발 ==하는 규칙 을 사용하여 하나 또는 두 피연산자를 동일한 유형으로 변환 한다는 것입니다. 피연산자는 동일한 유형 인 경우 (모두 예와 같이 문자열이다 예 typeof상기 비교) =====정확히 동일하게 작동한다.

더 많은 독서 :


답변

변수가 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