Javascript
-
자바스크립트에서 전역변수와 클로저(closure)Javascript 2016. 12. 9. 00:15
TL; DR 구버전 자바스크립트에는 class가 없습니다. class와 유사한 용도로 사용할 수 있는 패턴이 있습니다. 바로, closure입니다. Sum 숫자를 누적시켜서 더하는 코드를 작성해봅시다. 여기까지는 그다지 어렵지 않습니다. var sum = 0; function add(num) { sum += num; } console.log(add(1)); console.log(add(1)); console.log(add(2)); console.log(add(2)); 하지만 위와 같은 함수들이 많아지게 된다면? 전역변수가 많아지고, 좋지 않은 코드가 될 것입니다.예기치 못한 호이스팅이 일어날 수 있죠. Closure 클로저를 이용하면 전역변수를 사용하지 않고 문제를 해결할 수 있습니다! function ..
-
자바스크립트의 비교연산자Javascript 2016. 12. 8. 20:15
equal v.s. strict equal 자바스크립트에서 좌측 값과 우측 값이 같은지 비교하는 2가지 연산자가 있습니다. equal과 strict equal입니다. equal은 =가 2개고 strict equal은 =가 3개입니다. equal == (equal)과 === (strict equal)입니다. == 비교 연산자는 느슨한 같음 연산자입니다. var numberSix = 6; var objectSix = new Number(6); console.log(numberSix == objectSix); 위 코드의 결과는 true입니다. 다른 언어에서는 == 연산이 아예 안 먹히면서 컴파일이 되지 않거나, false를 출력하는 경우가 많습니다. 하지만! 자바스크립트는 느슨한 비교를 합니다. 여기서 느슨한..
-
hoisting 현상과 단일 var 패턴Javascript 2016. 12. 7. 23:35
Hoisting 호이스팅hoisting 현상은 개발자들을 어리둥절하게 하는, 자바스크립트 특유의 현상입니다. 개발자들은 자바스크립트에서 변수의 적용 범위가 다른 언어들과 다르기 때문에 헷갈리는 경우가 많습니다. 예상치 못한 에러가 발생하지 않게 하기 위해서는, Hosting을 이해하고, 사전에 방지할 수 있는 코드를 작성해야 합니다. var exceptOne = 1; function doA() { console.log(exceptOne); var exceptOne = 2; } doA(); 위 코드를 보면, 3번째 라인에서 1을 출력할 것 같지만 결과는 undefined입니다. 호이스팅 현상 때문입니다. 자바스크립트는 함수 단위로 안에 있는 변수를 우선으로 여깁니다. 바깥 범위에 선언된 걸 쓰는 게 아니고..