값을 담는 공간. 변수이름(variable name)을 부여해서 관리
변수는 사용하기 전에 먼저 '선언(declaration)' 해야 한다
가급적 코드에서 사용하는 모든 변수들은 코드의 상단에서 선언해두자.
let num1;
num1 = 20;
console.log('num1 =', num1);
num1 = '이유나'; // JS 의 변수 타입은 대입하는 값의 타입에 따라 바뀐다.
// 동적 타입 언어 (dynamic type)
console.log('num1 =', num1);
// 데이터는 '값' + '타입' 으로 구성되어 있다
// 타입 -----------------------------------------------------
// typeof 연산자
console.log('-'.repeat(20))
console.log(typeof 10); // number 타입
console.log(typeof "10"); // string 타입
console.log(typeof(10), typeof('10'));
console.log(typeof(num1));
let num2; // 한번도 대입한적 없는 변수는 최초에 undefined 값을 가진다.
console.log('num2 =', num2, typeof num2);
// 사용가능한 변수명
let abc;
let year2022;
let $;
let $$$;
let $myMoney;
let _name_;
// let num1; // 중복된 이름의 변수 선언 불가 (let, const 인 경우.)
// var 는 중복 선언 가능
var k = 10;
console.log('k =', k);
var k = 20;
console.log('k =', k);
// 상수
const PI = 3.14;
console.log('PI =', PI);
// PI = 123; // 에러
// const h; // JS에선 바로 초기화 않으면 에러!
// 키워드 없이 선언 가능 --> global
// 이는 delete 를 사용하여 삭제 가능.
myValue = 200;
console.log('myValue =', myValue, typeof myValue);
delete myValue; // 변수 삭제
// console.log('myValue =', myValue, typeof myValue);
// 두 변수 값 바꾸는 방법
console.log('-'.repeat(20))
console.log('[두 변수 값 바꾸기]')
num3 = 100;
num4 = 200;
let temp;
console.log("바꾸기전 num3=" + num3 + " num4="+num4);
temp = num3;
num3 = num4;
num4 = temp;
console.log("바꾼후 num3=" + num3 + " num4="+num4);
// ES6 부터 등장한 비구조화 할당 구문을 사용하여
// 아래와 같이 편리하게 두개 변수값 서로 교환 가능
[num3, num4] = [num4, num3];
console.log("바꾼후 num3=" + num3 + " num4="+num4);
/*
* let, const 는 block scope (블럭 영역) 를 갖는 변수다
* 블럭 안에서 선언된 변수는 선언이후 블럭안에서만 사용가능함
* 블럭이 끝나면 해당 이름의 변수는 사용 불가
*
* 이러한 변수를 지역변수(local variable) 이라 하고
* local scope (지역 범위) 를 갖는다 라고 말합니다.
* scope 는 해당 이름을 사용할수 있는 범위
*/
{
let i = 100;
console.log('i =', i);
}
// console.log('i =', i);
// scope 동작방식은 java 와 다르다! (C언어와 비슷)
let age = 1;
{
let age = 2; // 안쪽 scope 에서 바깥쪽 scope 에 선언된 변수와 같은 이름의 변수 선언 가능!!
{
let age = 3;
console.log('age.3 =', age);
}
console.log('age.2 =', age);
}
console.log('age.1 =', age);
console.log("\n[프로그램 종료]", '\n'.repeat(20));