본문 바로가기

JavaScript14

[JavaScript] Global variables (전역 변수) 모던 자바스크립트 Deep Dive 14장을 읽으며 정리한다. 내게는 좋지 않은 버릇이 하나 있다. 코딩하다 함수에서 값을 다른 함수로 전달하는 과정이 어려우면 가끔 전역 변수를 선언하고 그걸로 문제를 처리한다. 과연 좋은 걸까? 전역 변수의 문제점은 다음과 같다. 암묵적 결합(implicit coupling) : 모든 코드가 전역 변수를 참조하고 변경 가능 긴 생명 주기 스코프 체인 상에서 종점에 존재 : 검색 속도가 가장 느리다 네임스페이스 오염 : 자바스크립트는 파일이 분리되어 있어도 하나의 전역 스코프를 공유한다. 그렇다면 어떤 방식으로 전역 변수 사용을 억제할 수 있을까? 변수의 스코프는 좁을수록 좋다. 나처럼 무분별한 전역 변수 사용은 자제해야 한다. 즉시 실행 함수 : 모든 코드를 즉시 실행.. 2022. 2. 6.
[JavaScript] Function Note 모던 자바스크립트 Deep Dive 12장을 읽으며 정리한다. "Function Declarations vs Function Expressions" → Just a Style!... But? 함수 선언문은 다음과 같다. function add(x,y){ return x+y; } 함수 표현식은 함수 리터럴로 생성한 함수 객체를 변수에 할당하는 것이다. 다음과 같다. var add = function foo(x,y){ return x + y; }; 이때, 함수를 호출할 때는 함수 이름이 아니라 함수 객체를 가리키는 식별자를 사용해야 한다! 따라서 만약 위 코드에서 add( 1, 2)를 콘솔에 찍으면 정상적으로 출력되지만, foo로 찍으면 작동하지 않는다. 함수 이름은 함수 몸체 내부에서만 유효한 식별자기 때.. 2022. 2. 5.
[JavaScript] 원시 값 vs 객체 (Primitive Type/Reference Type(Object)) 모던 자바스크립트 Deep Dive 11장을 읽으며 정리한다. 원시 값(Primitive Type)은 변경 불가능한 값? 책에 서술되어 있는 내용을 가져왔다. 변경 불가능한 값이라고 하지만, 우리가 아는 변수는 값을 재할당 할 수 있다. 이에 잠시 의아함을 느꼈는데, 초점은 변경 불가능한 값이다. 원시 값을 할당한 변수에 새로운 원시 값을 할당한다면, 새로운 메모리 공간을 확보하고, 재할당한 원시 값을 저장한 다음, 변수는 새롭게 재할당된 값을 가리킨다. 즉, 변수가 참조하던 메모리 공간의 주소가 바뀐다. 메모리 공간에 저장되어 있던 값이 변경되는 게 아니다! 불변성 (Immutability) : 변경 불가능하다. 불변성을 갖는 원시 값을 할당한 변수는 재할당 외에 변수 값을 변경할 수 있는 방법이 없다.. 2022. 2. 4.
[JavaScript] 타입 변환&단축 평가 note 모던 자바스크립트 Deep Dive 9장을 읽으며 메모한다. 암묵적 타입 변환 인터넷에 돌아다니던 자바스크립트 밈이 있다. 이 중에서 몇가지만 가져와보겠다. 숫자, 문자 변환 10 + ‘1’은 10이 문자열 ‘10’으로 변환되어, 문자열 두개가 합쳐짐 10 - ‘1’은 ‘1’이 number 1로 처리되어 9가 됨 10 + ( +’1’)은 괄호 안에 있는 ‘1’이 숫자로 처리되어, 더해서 11이 됨. 숫자, 문자 변환 항상 자바스크립트 밈으로 나오는 그 식이다. 2+ 2 = 4, 지극히 평범한 식이다. “2” + “2” = “22”, 문자열을 붙이는 방식이다. 2 + 2 - 2 = 2, 납득할 만 하다 “2” + “2” - “2” = “20”, 당황스러운 결과다. 그러나 밑에 “22” - “2”가 20임을.. 2022. 2. 3.