자바스크립트에서 조건문을 쓸 때


일반적으로 if 문 안에 true,또는 false가 올 만한


값을 넣고 사용을 한다.


하지만 자바스크립트가 허용해주는 예외가 있다.


그것은 바로 0, undefined, NaN, null , ''(빈문자열), [](빈 배열) 등 무언가 공백이나 오류를 의미하는 값은 false로 인식,


 값이 있는 상수, 값이 있는 변수 등은 true로 인식한다. 


예컨대 


if (3)

{
}


는 항상 실행되는 문장이다.


이 사실을 어떻게 활용할수 있을까?

첫번째로는 값의 존재 유무를 체크하는 것이다.


예컨대 

if (document.getElementById('test'))

{

}


라 하면, "document 상에 test라는 아이디를 가진 엘리먼트가 존재하면 중괄호내 문장을 실행"이


라는 의미가 되는것이다.


또한가지는, 우리가 흔히 사용하는


return;, 또는 return 0;


이라는 문장. 보통은 이 문장을 기점으로 이벤트를 중지시키려고 사용하지만,


return false; 가 좀더 명시적이고 올바른 표현이다.


return 0, return이 분명 자바스크립트 상에서 return false와 비슷한 효과를 주긴 하지만, 


진정한 프로그래머라면 코드의 가독성을 높이는 명시적인 코딩을 해야하지 않을까?

자바스크립트는 변수 타입에 대한 설정이 상당히 관대한 언어이다.


어떤 변수 타입에 관한 잘못을 저질렀을때 자바스크립트는 오류를 내보내는 것 대신에


숫자는 문자로, 문자는 또 숫자, 기타 등등 으로 상황에 따라 적절(?)하게 변화시켜준다.


필자가 코딩을 하며 경험한 자바스크립트 변수 타입 오토캐스팅에 관한 몇가지 사실들을 공유하고자 한다.


법칙 1) 문자열 + 숫자 ->숫자가 더해진 문자열


예컨대


var x='abc';

var y=3;

alert(x+y);     // 'abc3' 출력


가장 기본적인 사실로, 대부분의 웹개발자가 할고있는 사실이다.


법칙 2) 비교연산자를 사용할 때 숫자vs문자를비교하면 문자열을 자동으로 숫자로 변환하여 비교해준다.


3>'4'를 비교하면 false라는 결과가 출력될 것이다.


법칙 3) 비교연산자를 사용할 때 문자열인 숫자 둘을 비교할 때,

자릿수가 같으면 올바로 연산을 해주나, 자릿수가 다르면 문자열로 인식하여 비교한다.


예컨대 '3000'>'2500'의 결과는 true이나, '3000'>'500'은 false이다.


----> 자바스크립트에서 문자열을 비교할 때는 문자열의 유니코드 값을 비교한다.

'3000'>'500'인 이유는 3보다 5가 유니코드 값이 더 크기때문이다.


법칙 4) 두 식중 하나가 NaN이면 항상 false를 반환한다.


물론 이경우는 숫자와 문자열을 비교했을때 자바스크립트가 믄자열인쪽을 숫자로


변환하다 NaN이 등장했을 경우이다.