본문 바로가기

전체 글

(154)
모던 자바스크립트 Deep Dive 14장 : 전역변수의 문제점 전역 변수의 무분별한 사용은 위험하다. 전역 변수를 반드시 사용할 이유가 없다면 지역 변수를 사용해야 한다. 변수의 생명주기 변수는 생성되고 소멸되는 생명 주기가 있다. 변수에 생명 주기가 없다면, 한 번 선언된 변수는 프로그램을 종료하지 않는 한 영원히 메모리 공간을 점유한다. 변수는 자신이 선언된 위치에서 생성 및 소멸한다. 전역 변수의 생명 주기는 애플리케이션의 생명 주기와 같다. 그리고 지역 변수의 생명 주기는 함수의 생명주기와 일치한다. 위 문장을 더 자세히 설명하면, 이전에 자바스크립트 엔진에 의해서 변수는 실행 전에 가장 먼저 선언한다 설명한 적이 있다. 이 부분은 전역 변수에 한정된 것이다. 함수가 호출되면, 그 때 함수 내부에 변수가 선언 된 후 다시 함수 몸체의 문이 한 줄씩 실행된다...
모던 자바스크립트 Deep Dive 13장 : 스코프 스코프(scope, 유효범위)는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념이다. 스코프는 함수와 변수에 연관이 깊어서 매우 중요한 개념이니 잘 이해해야한다. 타 언어와 다른 자바스크립트 스코프만의 특징이 존재함으로 이 부분도 주의 깊게 살펴봐야한다. 스코프 스코프는 식별자가 유효한 범위를 말한다. 모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효범위(스코프)가 정해진다. 대표적인 예시로, 함수의 매개변수가 있다. 매개변수는 함수 몸체 내부로 범위가 한정되며 외부에서는 사용할 수 없다. var x = 'global' function foo() { var x = 'local'; console.log(x); // 1. local } foo(); ..
리드미 작성 시 참고하기 좋은 사이트 https://readme.so/editor readme.so Use readme.so's markdown editor and templates to easily create a ReadMe for your projects readme.so 리드미 양식을 만들어주는 에디터이다. 이 사진처럼 원하는 섹션을 선택해서 내용을 수정해서 더한 뒤 다운로드를 받으면 이쁜 리드미가 완성된다!
모던 자바스크립트 Deep Dive 12장 : 함수 함수란? 함수는 자바스크립트의 핵심 개념이다. 또 다른 자바스크립트의 핵심 개념인 스코프, 실행 컨텍스트, 클로저, 생성자 함수에 의한 객체 생성, 메서드, this, 프로토타입, 모듈화 등이 모두 함수와 깊은 관련이 있다. 함수는 일련의 과정을 문으로 구현하고 코드 블록으로 감써서 하나의 실행 단위로 정의한 것이다. 매개변수, 인수, 반환값 등이 있으며 식별자인 함수 이름을 사용할 수 도 있다. 인수를 통해서 함수에 매개변수를 전달하고, 함수의 실행을 지시하는 것을 함수의 호출이라 한다. function 함수이름 (매개변수1, 매개변수2, ...) { return 반환값 } // 함수정의 함수이름(인수1, 인수2) // 함수호출 // 예시 function add (x,y) { return x+ y } ..
모던 자바스크립트 Deep Dive 11장 : 원시 값과 객체의 비교 원시 타입과 객체 타입은 크게 세 가지 측면이 다르다. 1. 원시 타입은 변경 불가능하지만, 객체 타입은 변경 가능한 값이다. 2. 원시 값을 변수에 할당하면 메모리에 실제 값이 저장되나, 객체를 변수에 할당하면 메모리에는 참조 값이 저장된다. 3. 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다. 이를 값에 의한 전달(pass by value)라 한다. 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다. 이를 참조에 의한 전달(pass by reference)라 한다. 이에 대해 더 자세하게 알아보자. 원시 값 불변성 원시 값은 변경불가능한 값이다. 재할당은 가능하지만, 변하지 않는다. 변경이 불가능하기에 재할당 시에도 메모리 공간에서 값이..
책을 읽으니 배워야할 게 너무 많다. 46장에 aysnc await까지 앞으로 36장 남았다. 이번달이 끝나기 전에 이 모든 걸 다 읽자. 읽으면서, 이것 저것 많이 보게된다. 이런 부분들도 다시 재정리하고 싶은데 갈 길이 멀다. 힘내자. 잘하고 있어. 내일은 더 좋은 개발자가 되기를 그래도 책과 공식문서로 교차검증하면서 읽으니 굉장히 마음이 편하다. 가장 빠른 길을 걷는 기분이 든다.
모던 자바스크립트 Deep Dive 10장 : 객체 리터럴 객체 자바스크립트는 객체 기반 언어이며, 자바스크립트를 구성하는 거의 모든 것이 객체(함수, 배열, 정규 표현식)다. 원시 타입은 하나의 값만 나타내고 변경이 불가능하지만 객체 타입은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조이며 변경이 가능하다. 프로퍼티와 메서드 객체는 0개 이상의 프로퍼티로 구성된 집합이다. 프로퍼티는 키와 값으로 구성된 객체의 상태를 나타내는 값(데이터)이다. 자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 자바스크립트의 함수는 일급 객체이므로 값으로 취급할 수 있다. 이 때, 프로퍼티 값이 함수일 경우 이를 메서드라 부른다. 이렇게 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임을 객체지향 프로그래밍이라 한다. ※ 일급객체(Firs..
모던 자바스크립트 Deep Dive 9장 : 타입 변환과 단축 평가 값이 개발자의 의도에 따라서 변환되는 것은 명시적 타입 변환 또는 타입 캐스팅이라 한다. 그리고 개발자의 의도와 관계없이 JS 엔진에 의하여 변하는 것을 암묵적 타입 변환 또는 타입 강제 변환이라 한다. 이전에 예시 들었던 if 문에서 boolean 타입이 반환되는 걸 생각하면 된다. 하지만, 이 값이 실제로 변경되는 것은 아니다. 일반적으로 원시 값은 변경 불가능한 값이므로 변경할 수 없다. 기존 원시 값을 이용하여 새로운 원시값을 생성하는 것이다. 명시적 변환은 결과를 예측하기 쉬워서 에러를 줄일 수 있으나 가독성 측면에서 암묵적 변환에게 밀리는 경우가 있어서 두 개가 혼합하여 사용하게 된다. 10 + '' // 암묵적 (10).toString() + '' //명시적 boolean값으로 암묵적 타입 ..