본문 바로가기
학습중.../(책)모던 자바스크립트

~p73

by sweesweet 2022. 12. 29.

한번 날리고 다시씀...

 

p62 템플릿 리터럴은 멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리기능을 제공, 템플릿 리터럴은 런타임에 일반 문자열로 변환되어 처리 (``)로 표현

 

p66 undefined 개발자가 의도적으로 할당하기 위한 값이 아니라 자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값. 

개발자가 의도적으로 변수에 할당한다면 undefined의 본래 취지와 어긋날뿐더러 혼란을 줄 수 있으므로 권장X

변수에 값이 없다고 명시하고 싶을 때는  null을 사용

 

p67 프로그래밍 언어에서 null은 변수가 값이 없다는 것을 의도적으로 명시할 때 사용. 이전에 할당되어있던 값에 대한 참조를 명시적으로 제거하는 것을 의미하며, 자바스크립트 엔진은 누구도 참조하지 않는 메모리에 대해 가비지 콜렉션을 수행 할 것

symbol은 ES6에서 추가된 7번째 타입으로 변경불가능한 원시타입의 값. 심벌값은 다른 값과 중복되지않는 유일무이한 값. 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용

 

p68 자바스크립트는 객체기반의 언어이며, 자바스크립트를 이루고있는 거의 모든 것이 객체

p70

😎 데이터 타입이 필요한 이유

- 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
- 값을 참조할 때 한번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
- 메모리에서 읽어들인 2진수를 어떻게 해석할지 결정하기 위해

p72 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론). 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.이러한 특징을 동적 타이핑이라 하며, 자바스크립트를 정적타입 언어와 구별하기 위해 동적 타입이라 한다.

 

p73 변수 값은 언제든 변경될 수 있기 때문에 복잡한 프로그램에서는 변화하는 변수값을 추적하기 어려울 수 있다. 동적타입 언어의 변수는 값을 확인하기 전에는 타입을 확신할 수 없다.

자바스크립트는 개발자의 의도와는 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동으로 변환되기도 한다. 이로 인한 잘못된 예측으로 인해 작성된 프로그램은 오류가 생길 수 있다. 동적 타입 언어는 유연성은 높지만 신뢰성은 떨어진다. 

🌞 변수를 사용할 때 주의 사항
1. 변수는 꼭 필요한 경우에 한해 제한적으로 사용한다. 자바스크립트는 타입을 잘못 예측해 오류가 발생할 가능성이 크기 때문에, 변수의 갯수가 많아질수록 오류가 발생할 확률도 높아진다. 변수의 갯수는 필요한만큼 최소한으로 유지하도록 주의해야 한다.

2. 변수의 유효범위(스코프)는 최대한 좁게 만들어 변수의 부작용을 억제해야 한다. 변수의 유효범위가 넓을수록 변수에의해 오류가 발생할 확률이 높아진다.

3.전역변수는 최대한 사용하지 않도록 한다. 어디서든지 참조/변경 가능한 전역 변수는 의도치 않게 값이 변경될 가능성이 높고 다른 코드에 영향을 줄 가능성도 높다.
전역변수는 프로그램의 복잡성을 증가시키고 처리 흐름을 추적하기 어렵게 만들고, 오류가 발생할 경우 오류의 원인을 특정하기 어렵게 만든다.

4. 변수보단 상수를 사용해 값의변경을 억제한다(const키워드 사용!)

5. 변수 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍한다. 개발자의 의도를 나타내는 명확한 네이밍은 코드를 이해하기 쉽게 만들고, 협업과 생산성 향상에 도움을 준다.

 

코드는 오해하지 않도록 작성해야 한다. 오해는 커뮤니케이션을 어렵게 하는 대표적인 원인으로 생산성을 떨어뜨리는 것은 물론 팀의 사기까지 저하시킨다. 코드는 동작하는 것만이 존재 목적은 아니다. 코드는 개발자를 위한 문서이기도 하다. 따라서 사람이 이해할 수 있는 코드, 즉 가독성이 좋은 코드가 좋은 코드다

 

[출처]모던 자바스크립트 Deep Dive

'학습중... > (책)모던 자바스크립트' 카테고리의 다른 글

~p123  (0) 2023.01.02
~p107  (0) 2023.01.01
~p92  (0) 2022.12.30
~p62  (0) 2022.12.28
~p45  (0) 2022.12.27