// 변수 ★★★
// # ES5 (ver_ECMA2005)
// 1. 변수의 선언 : var
// --> 변수의 type이 없다....
var a = 10;
// 2. 특징
// 2-1. 재선언 가능: var로 선언된 변수는 같은 이름으로 여러 번 선언할 수 있습니다.
var a = 10;
var a = "안녕하세요"; // --> 에러 없이 a를 다시 선언..... 되기는해....
console.log(a); // --> 출력 : 안녕하세요
// 2-2. 리터럴
a = 12; //--> 숫자(정수형)
a = 10.3; //--> 실수형
a = "큰따옴표" //--> 문자열
a = '작은따옴표' //--> 이것도 문자열
a = true //--> boolean
a = null; //--> 참조타입
a = undefined;
//--> 변수가 초기화되지 않았거나 값이 할당되지 않았을 때 기본적으로 갖는 값
//--> 명시적으로 선언하지 않아도,
변수를 선언하고 값을 할당하지 않으면 해당 변수는 자동으로 undefined로 설정됨!!
console.log(a); // --> 출력 : (연한글씨로) undefined
// 2-3. 스코프 : 메모리의 소멸이 안됨..
{
var b = 20;
console.log(b);
}
console.log(b); // --> 스코프 밖인데도 출력이 된다ㅠㅠ
// --> 전역 스코프에 변수가 누출될 수 있는 문제가 발생할 수 있음!!!
// 2-4. 호스팅 :
console.log(y); // 에러가 아니라 'undefined' 출력
var y = 5;
// --> 변수 선언이 함수 또는 블록의 상단으로 끌어올려지기 때문에
변수를 선언하기 전에 사용해도 에러가 발생하지 않습니다.
// --> 이는 예측하지 못한 동작을 초래할 수 있습니다.
// ## ES6 (ver_ECMA2015)
// 1. 변수의 선언
// let과 const가 도입됨!!!
// let : 블록 스코프를 갖는, 재할당 가능한 변수
// const : 재할당 불가능한 변수
// 1-1. let ★
// let은 블록 스코프를 가지는 변수를 선언하는 데 사용됩니다.
// 이것은 변수가 선언된 중괄호 {} 내에서만 유효하다는 것을 의미합니다.
// let 변수는 재할당이 가능하므로 값을 다시 설정할 수 있습니다.
// 호스팅이 발생하지만 초기화되기 전에 변수에 접근하면 ReferenceError가 발생합니다.
let x = 10; // 변수 선언 및 초기화
x = 20; // 재할당 가능
{
let y = 30; // 블록 스코프 변수
console.log(x); // 20
console.log(y); // 30
}
console.log(x); // 20
// console.log(y); // 에러: y는 블록 밖에서 접근 불가
// 1-2. const ★★ (= java에서의 final과 비슷함)
// const는 블록 스코프를 가지는 상수를 선언하는 데 사용됩니다. 상수는 한 번 할당하면 다시 할당할 수 없습니다.
// const 변수는 재할당이 불가능하며 선언과 동시에 초기화해야 합니다.
// const는 일반적으로 상수 값이나 변경되지 않는 변수를 선언할 때 사용됩니다.
// 호이스팅이 발생하지만 초기화되기 전에 변수에 접근하면 ReferenceError가 발생합니다.
{
const q= 50;
// const q= 30; --> 이건 당연히 안되고
// q = 40; --> const는 상수선언이니까 이런식으로 재선언 불가!!!!! error 뜨면서 밑에 코드 실행 X
console.log(q);
}
const pi = 3.14159265359; // 상수 선언과 초기화
// pi = 3.14; // 에러: 상수는 재할당 불가능
{
const gravity = 9.81; // 블록 스코프 상수
console.log(pi); // 3.14159265359
console.log(gravity); // 9.81
}
console.log(pi); // 3.14159265359
// console.log(gravity); // 에러: gravity는 블록 밖에서 접근 불가
'JavaScript > DAY 34 _ 23.10.11' 카테고리의 다른 글
배열 (0) | 2023.10.11 |
---|---|
조건/반복문 (1) | 2023.10.11 |
연산자 (0) | 2023.10.11 |
JS Basic2 (0) | 2023.10.11 |
JS basic (0) | 2023.10.11 |