javascript null,undefined,empty 차이
전역 undefined
속성은 undefined
원시 값을 나타내며, JavaScript의 원시 자료형 중 하나입니다. undefined
는 전역 객체의 속성입니다. 즉, 전역 스코프에서의 변수입니다. undefined
의 초기 값은 undefined
원시 값입니다. 값을 할당하지 않은 변수는 undefined
자료형입니다. 또한 메서드와 선언도 평가할 변수가 값을 할당받지 않은 경우에 undefined
를 반환합니다. 함수는 값을 명시적으로 반환하지 않으면 undefined
를 반환합니다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/undefined
null
은 JavaScript의 원시 값 중 하나로, 어떤 값이 의도적으로 비어있음을 표현하며 불리언 연산에서는 거짓으로 취급합니다. null
은 undefined
와 같은 전역 객체의 식별자가 아닙니다. 대신 식별되지 않은 상태를 나타내며 해당 변수가 어떠한 객체도 가리키고 있지 않음을 표시합니다. API에서는 대개 객체를 기대했지만, 어떤 적합한 객체도 존재하지 않을 때 반환합니다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/null
console.log(undefined==null)이 true인 이유
비교연산자 ==는 자료형이 다르면 자동 형변환으로 자료형을 강제로 맞춰서 비교하는 비교연산자입니다.
undefined와 null(object)은 자료형이 다르니 자바스크립트 엔진에서 통일해서 둘 다 값이 없는것으로 true를 반환합니다.
이 경우 === 연산자(자료형까지 비교)를 사용하면 원하는 결과를 얻을 수 있습니다.
javascript에서 false가 return 되는 것
”” (빈 문자열)
NaN (Not a Number)
undefined (정의되지 않은 값)
null (Null값)
false (기본 boolean false)
0 (숫자 0)
javascript null,undefined,empty 확인 방법
1. 배열이 비어있는지 확인
if( !array.length )
2. 배열에 뭔가가 들어있는지 확인
if( array.length )
3. 문자열이 비어있는지 확인 // undefined, null 모두 포함
if(!string)
4.어떤 참조 변수가 false인지 판정할 때는 다음처럼 작성하지 마시고:
if ( foo === false )
true인지를 확인하도록 부정(!)을 사용하세요.
if ( !foo )
이렇게하면 foo의 값이 0, “”, null, undefined, NaN인 경우에도 참을 반환할 겁니다.
5. foo가 불린값 false를 갖는지를 확인하는 경우
if ( foo === false )
6. 어떠한 변수 foo의 값은 null이나 undefined 확인 : 강제형변환되는 ==를 사용
if ( foo == null )
== 를 사용하면, 판정하려는 변수의 값이 `null` 이나 `undefined` 일 때, 참을 반환할 것입니다.
하지만 `false` 나 "" 나 0 값을 가질 때에는 거짓을 반환할 것입니다.
잘못된 확인
if ( foo === null || foo === undefined )
false나 "", 또는 0의 값도 null이기 때문에 정확한 확인이 안됨 (위에서 말 한 것 처럼 빈 값을 의미)
컴퓨터 과학 분야에서 리터럴(literal)이란 소스 코드의 고정된 값을 대표하는 용어다.
'javascript & jQuery' 카테고리의 다른 글
let const var 차이 (0) | 2019.06.27 |
---|---|
[JQUERY] Double exclamation points, 느낌표 두개, !! (0) | 2018.05.21 |
.SVG (Scalable Vector Graphics) (0) | 2018.03.29 |
What is “.el” in relationship to JavaScript/HTML/jQuery? (0) | 2018.03.14 |
암호화 (0) | 2018.02.13 |