programing tip

null vs. undefined 및 == 및 ===의 차이점에 대한 JavaScript 검사

itbloger 2020. 10. 4. 10:40
반응형

null vs. undefined 및 == 및 ===의 차이점에 대한 JavaScript 검사


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

  2. ==의 차이점은 무엇입니까 ===(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.

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

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,하지 undefined. 마찬가지로 DOM의 getElementById작업은 유효한 객체 참조 (DOM 요소를 찾은 경우) 또는 null(확인하지 못한 경우 ) 객체 참조를 반환합니다 .

흥미롭게도 (아니면), 그들은 그들 자신의 유형입니다. 즉, nullNull 유형 undefined의 유일한 값이고 정의되지 않은 유형의 유일한 값입니다.

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

그들 사이의 유일한 차이점은 ==일치 할 값을 얻기 위해 유형 강제를 수행하고 일치 ===하지 않을 것이라는 점입니다. 그래서 예를 들어 "1" == 1있기 때문에, 사실 "1"강제 변환에 1. 그러나 "1" === 1입니다 거짓 유형이 일치하지 않기 때문에. ( "1" !== 1is true.)의 첫 번째 (실제) 단계 ===는 "피연산자의 유형이 동일합니까?"입니다. 대답이 "아니오"이면 결과는 false입니다. 유형이 동일하면 정확히 ==수행합니다.

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

더 많은 사양 :


차이는 미묘합니다.

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) thenoptional이 "three"문자열이되지만 전달 doSomething(1, 2, null)하면 optional이됩니다 null.

동일 ==하고 엄격하게 동일한 ===비교기의 경우 첫 번째는 약한 유형이고 엄격하게 동일 함은 값 유형도 확인합니다. 0 == "0", true를 반환합니다. while 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와 직접 비교 : 두 가지 기본 방법 중 하나에 의해 undefined또는 typeof. 들어 여러 가지 이유로 , 나는 좋아한다 typeof x === "undefined".
    • 그 중 하나 여부를 확인 null하고 undefined사용하여 ==및 평균이하는 약간 난해한 유형 강제 변환 규칙에 의존 x == null정확하게 당신이 원하는 않습니다.

  2. 기본적인 차이 ==와는 ===피연산자가 서로 다른 유형의 경우,이다 ===항상 돌아갑니다 false동안 ==사용하여 동일한 유형으로 하나 또는 두 피연산자를 변환합니다 규칙을 리드 일부 약간 직관적 행동. 피연산자는 동일한 유형 인 경우 (모두 예와 같이 문자열이다 예 typeof상기 비교) =====정확히 동일하게 작동한다.

더 많은 읽기 :


찾으시는 주소가 없습니다

변수가 아직 초기화되지 않았 음을 의미합니다.

예 :

var x;
if(x){ //you can check like this
   //code.
}

같음 (==)

값이 데이터 유형이 아닌지 확인합니다.

예 :

var x = true;
var y = new Boolean(true);
x == y ; //returns true

값만 확인하기 때문입니다.

Strict Equals (===)

값과 데이터 유형이 동일해야하는지 확인합니다.

예 :

var x = true;
var y = new Boolean(true);
x===y; //returns false.

데이터 유형 x가 기본 유형이고 y가 부울 객체인지 확인하기 때문입니다.


변수가 null이거나 정의되지 않은 경우 어떻게 확인합니까?

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

if(variable)

변수에 다음이 포함되지 않으면 true를 반환합니다.

  • 없는
  • 찾으시는 주소가 없습니다
  • 0
  • 그릇된
  • ""(빈 문자열)
  • NaN

광고 1. 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');

광고 2. ===확인 값 및 유형. ==망가 (사용하여 비교하기 전에 동일한 유형과 만든 암시 적 변환을 필요로 .valueOf()하고 .toString()). 여기에 모두 ( src )가 있습니다.

만약

여기에 이미지 설명 입력

== (부정 ! = )

여기에 이미지 설명 입력

=== (부정 ! == )

여기에 이미지 설명 입력


(논리적) 검사가 부정 (!)이고 JS를 모두 캡처 null하고 undefined(다른 브라우저가 다른 결과를 제공하므로) 덜 제한적인 비교를 사용합니다. 예 :

var ItemID = Item.get_id();
if (ItemID != null)
{
 //do stuff
}

이것은 nullundefined


다음 코드를 사용하여 null이 아님, 공백이 아님, 정의되지 않음과 같은 유효성 검사를 위해 네 (4) 조건을 모두 확인할 수 있으며 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);
}

}

참고 URL : https://stackoverflow.com/questions/5101948/javascript-checking-for-null-vs-undefined-and-difference-between-and

반응형