javascript - 해결 - 차이




null 대 undefined 및==와===의 차이점을 검사하는 JavaScript (4)

변수가 null 이거나 undefined 경우 변수를 검사하는 방법은 무엇입니까?

변수가 null :

if (a === null)
// or
if (a == null) // but see note below

...하지만 aundefined 경우에도 후자가 true가됩니다.

그것이 undefined 습니까?

if (typeof a === "undefined")
// or
if (a === undefined)
// or
if (a == undefined) // but see note below

...하지만 다시 한 번, 마지막 하나는 모호합니다. anull 경우도 true가됩니다.

자, 위의 내용에도 불구하고, 그 (것)들을 검사하는 보통 방법은 그들이 틀리다 는 사실을 사용하는 것입니다 :

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

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

... 그리고 nullundefined 의 차이점은 무엇입니까?

그것들은 보통 무언가가 없음을 나타내는 데 사용되는 두 값입니다. undefined 는 좀 더 일반적인 것입니다. 다른 값이 할당되기 전까지는 변수의 기본값으로 사용되고, 함수가 호출 될 때 제공되지 않은 함수 인수의 값으로 사용되며, 호출 할 때 얻을 수있는 값으로 사용됩니다. 소유하고 있지 않은 속성의 객체. 그러나 그것은 또한 모든 상황에서 명시 적으로 사용될 수 있습니다. 속성이없는 개체와 값이 undefined 속성의 차이점은 인수에 대해 undefined 값이있는 함수를 호출하는 것과 해당 인수를 완전히 사용하지 않는 것의 차이입니다.

nullundefined 보다 약간 더 구체적입니다. 빈 객체 참조입니다. 자바 스크립트는 느슨하게 입력됩니다. 물론 자바 스크립트가 상호 작용하는 모든 것들이 느슨하게 입력 된 것은 아닙니다. 브라우저의 DOM과 같은 API에 비어있는 객체 참조가 필요한 경우 undefined 되지 undefined null 을 사용합니다. 마찬가지로 DOM의 getElementById 연산은 유효한 객체 (DOM 요소를 찾은 경우) 또는 null (없는 경우) 중 하나를 나타내는 객체 참조를 반환합니다.

흥미롭게도 (또는 아님), 그들은 자신의 유형입니다. 즉, null 은 Null 유형의 유일한 값이고 undefined 는 Undefined 유형의 유일한 값입니다.

"=="와 "==="의 차이점은 무엇입니까?

그들 사이의 유일한 차이점은 == 가 값 강제 변환을 수행하여 값을 일치 시키려고하고, === 그렇지 않다는 것입니다. 예를 들어, "1" == 1 은 참입니다. "1"1 됩니다. 그러나 유형이 일치하지 않기 때문에 "1" === 1거짓 입니다. ( "1" !== 1 은 참입니다.) === 첫 번째 (실제) 단계는 "피연산자의 유형이 같은가?"입니다. 대답이 "아니오"이면 결과는 false 입니다. 유형이 동일하면 정확하게 == 수 있습니다.

유형 강제 변환은 매우 복잡한 규칙을 사용하며 놀라운 결과를 가져올 수 있습니다 (예 "" == 0 은 참입니다).

더 많은 사양 :

나도 알아,이 주제를 다루는 스레드가 있어야한다는 것을 알고있다. 하지만 검색을 사용하고 내 필요에 맞는 대답을 얻지 못했습니다. 그래서 여기에 우리가 간다.

  1. 변수가 null 이거나 undefined nullundefined 의 차이점은 무엇입니까?

  2. "=="와 "==="의 차이점은 무엇입니까 (Google 검색이 힘들습니까 === )?


변수가 null이거나 정의되지 않은 경우 변수를 검사하는 방법

변수에 다음과 같은 유효한 값이 있는지 확인하십시오.

if(variable)

variable에 포함되지 않으면 true를 반환합니다.

  • 없는
  • 정의되지 않은
  • 0
  • 그릇된
  • ""(빈 문자열)
  • NaN

그 차이는 미묘합니다.

JavaScript에서 undefined 변수는 결코 선언되지 않았거나 값을 할당하지 undefined 변수입니다. var a; 를 선언한다고 가정 해 보겠습니다 var a; 예를 들어, 어떤 값도 할당 undefined 으므로 aundefined .

그러나 당신 a = null; 을 할당한다면 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) 하면 optional이 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

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

  1. 변수 x 경우 다음을 수행 할 수 있습니다.

    • === 사용하여 직접 비교하여 null 인지 확인하십시오. 예 : x === null
    • undefined 또는 typeof 와 직접 비교하는 두 가지 기본 방법 중 하나에 의해 undefined 는지 확인하십시오. 여러 가지 이유로 typeof x === "undefined" 선호합니다.
    • == 를 사용하고 x == null 이 사용자가 원하는 것을 정확하게 수행한다는 약간의 비전의 형 변환 규칙에 의존하여 null 인지 undefined 인지 확인하십시오.

  2. ===== 의 기본적인 차이점은 피연산자가 다른 유형 인 경우 === 는 항상 false 를 반환하지만 == 는 약간의 직관적 인 행동을 유도하는 rules 을 사용하여 피연산자 중 하나 또는 둘 다를 같은 유형으로 변환한다는 것입니다. 피연산자가 같은 유형 인 경우 (예 : 양쪽 모두 위의 유형 비교와 같은 문자열 임) ===== 는 정확히 동일하게 작동합니다.

추가 읽기 :





undefined