

▶ 값을 저장하는 박스

// 1. 변수
let age = 27; // age 변수 선언, 초기화(초기값)
console.log(age);
age = 30;
console.log(age); // 변수 변경됨.
// let age;와 같이 초기값이 없이도 설정 가능
// let age = 40;과 같이 중복 선언 불가능
// 2. 상수
const birth = "2002.10.03";
// birth = "123";으로 값 바꾸기 불가능
// const birth;와 같이 초기화 무조건 필요함
▶ 가장 중요한 것은 변수와 다르게 상수는 무조건 초기화를 해야한다는 것
// 3. 변수 명명규칙 (네이밍 규칙)
// 3-1. $, _를 제외한 기호는 사용할 수 없다.
let $_name
// 3-2. 숫자로 시작할 수 없다.
let name1;
// let 2name; (x)
// 3-3. 예약어를 사용할 수 없다.
// let let (x)
// let if (x)
// 4. 변수 명명 가이드
let salesCount = 1;
let refundCount = 1;
let totalSalesCount = salesCount - refundCount;
▶ 협업을 위해 단순히 a, b로 쓰는 것이 아닌 이 변수가 어떤 것을 의미하는지 정확하게 표기하는 것이 원칙이다.

▶ 자료형(Type) = '집합'
동일한 속성이나 특징을 가진 원소들을 묶은 것이다.
ex) 고양이와 강아지는 '동물'이라는 집합으로 묶임.

▶ 기본형 타입이라고도 불리며, 프로그래밍에 있어 가장 기본적인 값들의 타입을 의미한다.
// 1. Number Type
let num1 = 27;
let num2 = 1.5;
let num3 = -20;
console.log(num1 + num2);
console.log(num1 - num2);
console.log(num1 * num2);
console.log(num1 / num2);
console.log(num1 % num2); // 모듈러 연산
이외에도 ▼
let inf = Infinity; // 양의 무한대
let minf = -Infinity; // 음의 무한대
let nan = NaN; // 수치 연산이 실패했을 때의 결과 값으로 보통 사용한다. (Not a Number)
// 2. String Type
let myName = "김유겸"; // 문자열은 무조건 작은 따옴표나 쌍 따옴표로 감싸야 함.
let myLocation = "인천";
let introduce = myName + myLocation; // js는 문자열 간 연산 가능
// 2-1. 템플릿 리터럴 문법
let introduceText = `${myName}은 ${myLocation}에 거주합니다.`
▶ 백틱 안에서는 변수의 값을 동적으로 넣을 수 있다.
// 3. Boolean Type
let isSwitchOn = true;
let isEmpty = false;
▶ 현재 상태를 나타내는데 주로 사용함.
// 4. Null Type
let empty = null;
▶ 아무것도 없음을 나타냄.
let none; // 아무것도 할당하지 않았으므로 'undefined' 출력
Null vs Undefined
- null은 명시적으로 할당해줘야하는 값.
- undefined는 변수를 선언하고 아무런 값을 할당하지 않았을 때 자동으로 들어가는 값.
▶ 어떤 값의 타입을 다른 타입으로 변경하는 것을 말함.

▶ 개발자가 직접 설정하지 않아도 알아서 자바스크립트 엔진이 형 변환 하는 것을 말함.
// 1. 묵시적 형 변환
// -> 자바스크립트 엔진이 알아서 형 변환 하는 것
let num = 10;
let str = "20";
const result = num + str; // 덧셈 과정에서 str 타입으로 묵시적 변환 됨
console.log(result); // 10 + 20 = "1020"
▶ 개발자가 직접 함수 등을 이용해 형 변환을 일으킴. (내가 시켜야만 바뀜.)
// 2. 명시적 형 변환
// -> 프로그래머 내장 함수 등을 이용해서 직접 형 변환을 명시
// 2-1. 문자열 => 숫자
let str1 = "10";
let strToNum1 = Number(str1); // Number 내장 함수 사용
console.log(10 + strToNum1);
let str2 = "10개"
let strToNum2 = parseInt(str2); // parseInt 내장 함수 사용 -> 숫자가 앞쪽에 나와있어야 함
console.log(strToNum2);
// 2-2. 숫자 -> 문자열
let num1 = 20;
let numToStr1 = String(num1); // String 내장 함수 사용
console.log(numToStr1 + "입니다");
▶ 프로그래밍에서의 다양한 연산을 위한 기호, 키워드를 말함.
ex) 덧셈 연산자 (+), 곱셈 연산자 (*), 뺄셈 연산자 (-), 나눗셈 연산자 (/) 등
▶ 변수의 값을 저장할 때 사용하는 가장 기초적인 연산자
// 1. 대입 연산자
let var1 = 1;
// 2. 산술 연산자
let num1 = 3 + 2;
let num2 = 3 - 2;
let num3 = 3 * 2;
let num4 = 3 / 2;
let num5 = 3 % 2;
let num6 = 1 + 2 * 10; // 곱셈, 나눗셈, 모듈러 연산이 우선순위가 높음, ()를 사용하면 우선순위 높아짐
console.log(num6);
▶ 산술 연산자 + 대입 연산자
// 3. 복합 대입 연산자
let num7 = 10;
// num7 = num7 + 20;
num7 += 20; // or -= or *= or /= or %=
console.log(num7);
▶ 값을 1씩 늘리거나, 1씩 줄일때 사용하는 연산자
// 4. 증감 연산자
let num8 = 10;
console.log(++num8); // 전위 연산
console.log(num8++); // 후위 연산
▶ Boolean 타입의 값을 다룰때 사용하는 연산자
// 5. 논리 연산자
let or = true || false; // 하나만 참이면 참
let and = true && false; // 두개의 값이 참이어야 참
let not = !true; // 반전
console.log(or, and, not);
// 6. 비교 연산자
let comp1 = 1 === 2; // 동등 비교 연산자 (==일때는 자료형까지의 비교는 안됨.)
let comp2 = 1 !== 2; // 비동등 비교 연산자
console.log(comp1, comp2);
let comp3 = 2 > 1; // 대소 비교 연산자
let comp4 = 2 < 1;
console.log(comp3, comp4);
let comp5 = 2 >= 2;
let comp6 = 2 <= 2;
console.log(comp5, comp6);
▶ 존재하는 값을 추려내는 기능을 하는 연산자로써, null이나 undefined가 아닌 값을 찾아낸다.
// 7. null 병합 연산자
let var1;
let var2 = 10;
let var3 = 20;
let var4 = var1 ?? var2; // var1은 현재 undefined값, var2는 10
console.log(var4); // 따라서, var4에는 var2의 값인 10이 저장됨
let var5 = var1 ?? var3;
console.log(var5);
let var6 = var2 ?? var3; // 만약, 둘 다 undefined값이 아니라면?
console.log(var6); // 맨 처음에 적힌 값이 출력됨
//----example----
let userName = "김유겸";
let userNickName = "6_yummy";
let displayName = userName ?? userNickName;
console.log(displayName);
▶ 값의 타입을 문자열로 반환하는 기능을 하는 연산자
// 8. typeof 연산자
let var7 = 1;
var7 = "hello";
let t1 = typeof var7;
console.log(t1); // string의 결과값 출력
▶ 항을 3개 사용하는 연산자, 조건식을 이용하여 참 또는 거짓일 떄의 값을 다르게 반환한다.
// 9. 삼항 연산자
let var8 = 10;
// 요구사항: 변수 res에 var8의 값이 짝수 -> "짝", 홀수 -> "홀"
let res = var8 % 2 === 0 ? "짝수" : "홀수";
// ?를 기준으로 첫번째 항에는 조건식을 적기, :을 기준으로 왼쪽은 참일 때의 반환값, 오른쪽은 거짓일 때의 반환값
console.log(res);