얼마 전부터 Node 기반으로 되어 있는 시스템에도 접근할 수 있게 되어서 간단한 일감 정도는 쳐내고 있다. 그러다 문득 다음과 같은 형태의 코드가 많이 사용됨을 알게되었다. 변수명은 예제를 위해서 간략화 시켰다.1
2
3var res = makeInfo(data);
var a = (res && res.a) || 'default';
var b = (res && res.b) || 'default';
&&
와 ||
같은 논리 연산자를 사용하여 초기값을 할당하는데 사용한다.&&
은 논리곱 연산자(참조.aspx))라고 불리우는데 피연산자 2개각 모두 true일때만 true를 반환한다. 논리합 연산자(참조.aspx))라고 불리는 ||
는 두개의 피연산자 가운데 하나만 true여도 결과로 true를 반환한다.1
2
3
4
5var test = function {
return null;
}
var result = test();
var a = result.a;
위의 소스코드를 실행시키면 TypeError: result is null
라는 에러 메시지가 출력된다. result.a
대신에 (result && result.a)
를 사용하면 오류를 미연에 방지할 수 있다. 자바스크립트의 논리 연산에서 null와 undefined는 false로 간주 하기 때문에 두번째 피연산자로 어떤 것이 오더라도 null을 반환하게 되어 있다.
||
연산자는 어떤 변수의 디폴트 값을 정해주는 데 사용하곤 한다. 아래 소스 코드의 결과 처럼 말이다.1
2
3
4var a = null;
var b = 'B';
var c = a || b;
// "B"
요약 하자면 ||
연산자는 디폴트 값을 지정하는데 사용하고, &&
연산자는 null 처리 하는데 사용 하면 적절할 것 같다.
Comments