JavaScript 에서 변수를 선언할때는 , 변하지 않는 값은
const
변할 수 있는 값은let
으로 선언해라.
var과 let의 차이는 무엇일까 ?
case 1)
var name = 'Mike';
console.log(name);
var name = 'Jane';
console.log(name);
case 2)
console.log(name);
var name = 'Mike';
다음과 같이 var는 한번 선언된 변수를 다시 선언할 수 있지만 let은 오류를 발생한다.
또 , var는 선언하기 이전에 사용할 수 있다. var로 선언된 변수는 최상위로 끌어진 것처럼 동작한다. (호이스팅)
undefined
가 출력됨.스코프 내부 어디서든 변수 선언은 최상위에 선언된 것처럼 행동되는 것
그렇다면 왜 let은 var처럼 동작하지 않고 Error를 내는 것일까 ?
Temporal Dead Zone : 이 구간에 있는 변수는 사용을 할 수 없음 , 스코프의 시작지점부터 초기화 시작지점까지를 나타낸다. let과 const는 이 구간의 영향을 받는데 할당을 하기 전에는 사용할 수 없다. 이 때문에 let 도 호이스팅이 이루어지지만 에러가 발생하게 된다.
-> 결론
var : 함수 스코프
let , const : 블록 스코프
ex)
if(age > 19) {
var txt = '성인';
}
console.log(txt); // '성인'
--> 그러나 let ,const는 다음과 같이 사용불가하고 함수 내에서만 사용할 수 있다.
--> var 도 함수 내에서 선언되면 함수 내에서만 사용할 수 있다.
1) 변수는 문자와 숫자 , $와 _만 사용한다.
2) 첫 글자는 숫자가 될 수 없다.
3) 예약어는 사용할 수 없다.
// ex) class는 이미 js에서 예약어로 사용중인 이름이므로 변수명 사용 불가)
4) 가급적 상수는 대문자로 작성한다.
5) 변수명은 읽기 쉽고 이해할 수 있도록 선언한다.
문자열 선언 방식은 "" , '' , `` 세가지 방식이 있는데
1) " " : 문자 중간에 '를 사용하는 문자열인 경우에 큰 따옴표로 감싸주면 편하다
2) ' ' : 큰 따옴표와 별 차이는 없지만 중간에 '를 표현하려면 \' 로 표현해주어야 한다.
3) `` : 백틱으로 문자열 사이에 변수나 수식, ${변수명} 또는 ${수식} 을 이용할 때 사용한다.
또 여러줄을 표현할 수 있다.
문자열은 배열과 동일하게 []로 접근할 수 있다. 하지만 [인덱스]를 통해 값을 바꾸는 것을 불가하다.
관련함수
toUpperCase() / toLowerCase()
: 대소문자로 변환indexOf ('문자')
를 통해 첫번째 위치를 반환함 , 없으면 -1 반환str.slice(n,m)
str.substring(n,m)
str.substr(n,m)
: n부터 시작해서 m개를 가져옴 (2,4) : 2에서부터 2,3,4,5 까지 4개str.trim()
: 앞 뒤 공백 제거str.repeat(n)
: n번 반복includes
: includes(문자) : 포함되어 있으면 true 없으면 false를 반환한다.정수형 , 실수형 등 다양한 자료형이 있음
숫자와 관련된 작업을 할 때 NaN
을 항상 염두에 두고 작업해야 한다.
-> 변수를 선언하고 아무런 값을 할당하지 않으면 undefined 출력