* 자바스크립트 함수 호출시 인수를 생략하고 호출할 경우와 인수에 null 을 넣고 호출할 경우,
함수 내부에서는 어떻게 해석하는지, 또 null과 undefined는 어떤 관계가 있는지 살펴보자.
function test(arg){
var isNullValue = (arg == null);
var isUndefinedValue = (arg == undefined);
var isNull = (arg === null);
var isUndefined = (arg === undefined);
console.log('arg:' + arg + ', isNullValue:'+ isNullValue + ', isUndefinedValue:'+isUndefinedValue
+ ', isNull:'+ isNull + ', isUndefined:'+isUndefined);
}
* test() 로 호출할 경우 결과 (인수 생략)
=> arg:undefined, isNullValue:true, isUndefinedValue:true, isNull:false, isUndefined:true
* test(null) 로 호출할 경우 결과
=> arg:null, isNullValue:true, isUndefinedValue:true, isNull:true, isUndefined:false
* 결론
- 함수 호출시 입력되지 않은 인수를 참조할 경우 undefined 로 인식한다.
- 함수 호출시 null 을 인수로 넘기면 함수 내부에서 해당 인수를 참조할 경우 null 로 인식한다.
- null 과 undefined를 값으로 비교했을 경우(==) 같은 값이다.
- null 과 undefined를 값과 데이터형식까지 비교했을 경우(===) 다른 값이다.