회고록 블로그
[공부 필기] JavaScript 문법 공부 7일차 본문
※ 필자는 초초초보자입니다.
※ 틀린 내용에 대한 피드백은 언제든지 환영합니다.
공부하고 있는 자료 : modern JavaScript tutorial
https://ko.javascript.info/variables
✅ 변수와 상수
- var, let, const 등 키워드를 사용해서 변수를 생성하지만, 최근에 var은 사용하지 않는다.
- 세 가지 키워드에 대한 차이점은 ⚠️별첨1 참고
- 변수의 자료형(type)은 없다. 변수 안에 정수를 대입할수도, 배열을 대입할 수도, 문자열을 대입할 수도 있다.
- 가능한 한 줄에 하나의 변수를 작성하는게 가독성이 좋다.
✅ 변수 재사용
let message;
let msg2;
message = 'hello';
msg2 = message;
message = 'world!';
‣ 이때, message라는 박스(상자)에는 "hello"라는 문자열이 들어있었지만
‣ 값이 변경되면서, 이전 데이터(hello)는 변수에서 제거되고 새로운 값(world!)이 message라는 박스에 담기게 된다.
- 변수 재사용보다는 변수를 추가하는 것을 더 권장한다고 한다.
- 함수형 언어에서는 변수를 추가하는게 악습보다는 좋은 습관이며, 값이 다른 경우 변수를 다르게 선언해주면 코드 최적화에 도움이 될 수 있다고 한다.
✅ 함수형 언어
- JavaScript, Scala, Erlang 등은 대표적인 함수형언어이다.
- 함수형 프로그래밍 언어는 [변수값 변경을 금지]하는 특징이 있다.
- 일단 변수 이름이 붙은 상자 속에 저장되면, 그 값을 영원히 유지하게 되고
다른 값을 저장하고 싶으면 새로운 상자(새로운 변수)를 만들어야 한다.
- 즉, 이전 변수를 재사용할 수 없다.
- 좀 특이해 보일 수 있지만, 이런 특징은 병렬 계산과 같은 영역에서 장점으로 사용된다.
✅ 변수 명명
- 대소문자, 숫자, $와 _만 사용 가능 (대소문자 구분)
- 첫 글자 = 숫자 X
- 흔히 카멜 표기법을 사용한다.
- 예약어(let, class, return, function 등) 사용 불가
let $; //가능
let 11; //불가능
let 2b; //불가능
let _; //가능
let camelCase; //가능
✅ 상수
- const 키워드 사용
- 변수를 상수화(처음에 할당하고 나면 변경 불가) 시키는 것이며, 리터럴은 아닌 듯하다.
- 재할당하려고 하면 에러가 발생한다.
- 선언과 동시에 할당(대입) 해야하는 것 같다.
- 기억하기 힘든 값을 변수에 할당해서 별칭으로 사용하는 관습이 있는데
이때 상수명은 대문자와 밑줄로 명명한다.
const $ = "hello"; // 통과
const str; // 에러! 선언과 동시에 할당해야함
❖ 일반적인 방식으로 상수를 명명할 때
- 런타임 과정에서 계산되지만, 최초 할당 이후 값이 변하지 않는 상수 등
❖ 대문자와 밑줄로 상수를 명명할 때
- 쉽게 말해서 '하드 코딩한' 값일 때 (#FF7F00, PI 등)
- 프로그래머는 코드가 실행되기 전에 이미 그 값(상수)을 알고 있다.
✅ 변수명
- 간결하고 명확할 것
- 변수가 담고있는 것이 무엇인지 잘 설명할 수 있어야한다.
- 무엇을 하고 있는지 명확히 알고 있지 않을 경우 외에는 줄임말, 짧은 이름(a, b, c 등)을 피해야 한다.
- 자신만의 규칙을 계속 유지하거나 소속된 팀의 규칙을 따라야한다.
⚠️ 별첨1. var/let/const
var은 let과 const와는 다른 방식으로 동작한다.
var를 let으로 대체할 때는 var에 대해 정확하게 알고 있지 않으면 예상치 못한 에러를 만날 수 있다.
호이스팅에 대한 개념을 이해해야하므로, 호이스팅 먼저 공부하고 읽는 것이 좋을 듯 하다.
https://ko.javascript.info/var
'2. 프로그래밍 언어 공부 > JavaScript' 카테고리의 다른 글
[공부 필기] JavaScript 문법 공부 9일차 (0) | 2022.04.24 |
---|---|
[공부 필기] JavaScript 문법 공부 8일차 (0) | 2022.04.23 |
[공부 필기] JavaScript 문법 공부 6일차 (0) | 2022.03.07 |
[공부 필기] JavaScript 문법 공부 5일차 (0) | 2022.03.05 |
[공부 필기] JavaScript 문법 공부 4일차 (2) (0) | 2022.03.02 |