프로그래밍/ 7

[자바스크립트] 스코프, 변수 호이스팅(hoisting), ES6에서의 개선점

호이스팅 (hoisting)자바스크립트 (ES5) 에서 변수선언에 있어서 var 키워드는 스코프(scope)의 제일 위로 옮겨져서 선언이 된다. 이것을 호이스팅(hoisting)이라고 한다. 1234567function foo() { for(var i=0; i1) { // var customer = "Mary"; // } })(); console.log("outside : " + customer); Colored by Color Scriptercs 주석 처리를 한 상태에서는 customer는 전역 변수이므로 출력결과가 둘다 Joe 가 된다. 하지만 주석을 해제하면 function 안의 customer는 undefined가 된다. ES5에서는 변수 선언이 선언 범위의 제일 위로 올라가게 된다. 즉 저 fu..

프로그래밍/ 2017.12.08

[JavaScript] 자바스크립트 코딩 스타일 규칙 정리

Maintainable Javascript by Nicholas C.Zakas 를 보며 기본기를 공부 중이다. 좋은 내용들을 요약해 보겠다. 아마존에서 책을 구입했다. 좋은 개발자와 좋은 코딩을 위한 주옥같은 책인 것 같다. Basic FormattingIndentation Level들여쓰기 정도이다. 들여쓰는 스타일은 2가지로 나뉜다. Tab과 Space가 그것들이다. Tab을 이용했을 때의 장점 - 에디터에 따라 탭 크기를 조절할 수 있다 Tab을 이용했을 때의 단점 - 시스템이 다르게 해석할 수가 있다. Space를 이용했을 때의 장점 - 모든 에디터와 시스템이 동일하게 취급한다.- 에디터 설정으로 tab을 누르면 일정 숫자의 space를 누르게 할 수 있다. 이 책의 저자는 4칸의 space를 선..

프로그래밍/ 2017.12.02

자바스크립트 프로토타입

자바스크립트에는 Object, Function, Array 등과 같이 다양한 기본 객체들이 있고 모든 객체는 자바스크립트의 객체 대빵인 Object를 확장하고 있다. 이러한 면을 보면 Java와 굉장히 비슷해 보여서 객체지향 언어라고 생각하기 쉽다. 하지만 자바스크립트는 이벤트와 함수 기반 언어이고 객체지향언어는 아니다. 자바스크립트는 함수 기반 언어인 Scheme을 기반으로 만들어진 뒤 Java에서 다양한 개념들을 가져왔다. 따라서 객체지향 언어는 아니지만 이에 비슷한 특징들을 지원한다. 여기서 프로토타입(Prototype)이라는 것이 나온다. 자바스크립트는 객체지향 개념을 지원하기 위해 프로토타입을 사용한다. 프로토타입을 이용해 대표적으로 구현할 수 있는 개념은 "상속" 이다. 그럼 프로토타입이 무엇..

프로그래밍/ 2017.03.08

자바스크립트 변수의 성능 최적화

자바스크립트에서 성능을 개선할 수 있는 매우 괜찮은 방법 중 하나를 보자. 자바스크립트에서는 변수 사용이 자유롭고 클로저때문에 복잡하기도 하다. 상위 스코프의 변수 참조에 있어서의 성능에 대해 알아보자. 12345678910111213141516171819202122232425262728293031323334 Mouse over Highlight Floating Content (function () { var divMouseover = document.getElementById("divMouseover"), divFloatingContent = document.getElementById("divFloatingContent"); divMouseover.onmouseover = function () { va..

프로그래밍/ 2017.03.06

javascript 글로벌 변수에 대해서

글로벌 변수란 말 그래도 선언하면 어디서든지 접근할 수 있는 변수이다. 작성할수 있는 경우를 보자. 가장 대표적인 글로벌 변수의 예 경량의 웹사이트에서는 이렇게 쓰지만 복잡한 자바스크립트에서는 자제하는 것이 좋다. 자바스크립트의 특징 중 하나는 for 루프 안에서 글로벌 변수를 만들 수 있다는 것이다. 위와같이 선언했다면 global은 전역변수이다. 다른언어에서는 for문안에 지역적인 변수이지만 자바스크립트에서는 for문안에서 scope를 생성하지 않는다. 더 신기한것은 i까지도 글로벌 변수라는 것이다. 그래서 이런식으로 쓸때는 충돌에 굉장히 조심해야 한다. 다음도 헷갈리기 쉬운 문제이다. 콘솔에 뭐라고 찍힐것 같은가? 얼핏 보기엔 1부터 10까지 더한것을 10번 반복하여 550이 되는것 처럼 보인다. ..

프로그래밍/ 2017.02.05

자바스크립트의 1급객체와 클로저 개념

javascript의 매우 헷갈리는 부분에 대해서 보자. 1234567891011function outer() { var count = 0; var inner = function() { return ++count; }; return inner;}var increase = outer(); console.log(increase());console.log(increase());cs 자 이 함수롤 보자. 콘솔에 찍히는 것으로 구분을 해보면서 볼건데 결과값은 1,2가 나온다.외부함수를 실행하고 외부함수안에서 내부함수(inner)를 실행하지 않고 반환한다. return inner;그리고 외부변수 increase에 담아서 저장한다. 실행은 increse()로 해줘야 1,2 가 나온다. 왜그럴까? count변수는 ou..

프로그래밍/ 2017.02.01
반응형