1.4) 변수와 상수
// 1. 변수
let age;
age = 30;
// 2. 상수
const birth = "1997.01.07";
// 3. 변수 명명규칙(네이밍 규칙)
// 3-1. $, _ 제외한 기호는 사용할 수 없다.
let $_name;
// 3-2. 숫자로 시작할 수 없다.
let name1;
let $2name;
// 3-3. 예약어를 사용할 수 없다.
// 4. 변수 명명 가이드
let salesCount = 1;
let refundCount = 1;
let totalSalesCount = salesCount - refundCount;
1.5) 자료형
// 1. Number Type
let num1 = 27;
let num2 = 1.5;
let num3 = -20;
let inf = Infinity;
let mInf = -Infinity;
// 연산이 실패했을때 반환하는 `NaN` 이 존재하기 때문에
// 불가능한 수치 연산의 경우에도 프로그램이 종료되지 않음
// → 다른 언어에 비해 연산 과정에서 안정적
let nan = NaN;
// 2. String Type
let myName = "이정환";
let myLocation = "목동";
let introduce = myName + myLocation;
let introduceText = `${myName}은 ${myLocation}에 거주합니다`;
// 3. Boolean Type
let isSwitchOn = true;
let isEmpty = false;
// 4. Null Type (아무것도 없다)
let empty = null;
// 5. Undefined Type
let none;
console.log(none);
// undefined vs. null
// undefined : 변수를 선언하고 초기화 하지 않을때 자동으로 들어가는 값
// null : 사용자가 명시적으로 할당하는 값 (이 변수에 어떠한 값도 없다를 명시적으로 표시)
1.6) 형 변환
// 1. 묵시적 형 변환
// -> 자바스크립트 엔진이 알아서 형 변환 하는것
let num = 10;
let str = "20";
const result = num + str;
// 2. 명시적 형 변환
// -> 프로그래머 내장함수 등을 이용해서 직접 형 변환을 명시
// -> 문자열 -> 숫자
let str1 = "10";
let strToNum1 = Number(str1);
let str2 = "10개";
let strToNum2 = parseInt(str2);
// -> 숫자 -> 문자열
let num1 = 20;
let numToStr1 = String(num1);
console.log(numToStr1 + "입니다");
1.7) 연산자 1
// 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;
// 3. 복합 대입 연산자
let num7 = 10;
num7 += 20;
num7 -= 20;
num7 *= 20;
num7 /= 20;
num7 %= 10;
// 4. 증감 연산자
let num8 = 10;
++num8;
num8++;
// 5. 논리 연산자
let or = true || false;
let and = true && false;
let not = !true;
// 6. 비교 연산자
let comp1 = 1 === "1";
let comp2 = 1 !== 2;
let comp3 = 2 > 1;
let comp4 = 2 < 1;
let comp5 = 2 >= 2;
let comp6 = 2 <= 2;
1.8) 연산자 2
// 1. null 병합 연산자
// -> 존재하는 값을 추려내는 기능
// -> null, undefined가 아닌 값을 찾아내는 연산자
let var1;
let var2 = 10;
let var3 = 20;
let var4 = var1 ?? var2;
let var5 = var1 ?? var3;
let var6 = var3 ?? var2;
let userName;
let userNickName = "Winterlood";
let displayName = userName ?? userNickName;
// 2. typeof 연산자
// -> 값의 타입을 문자열로 반환하는 기능을 하는 연산자
let var7 = 1;
var7 = "hello";
var7 = true;
let t1 = typeof var7;
console.log(t1);
// 3. 삼항 연산자
// -> 항을 3개 사용하는 연산자
// -> 조건식을 이용해서 참, 거짓일 때의 값을 다르게 반환
let var8 = 10;
// 요구사항 : 변수 res에 var8의 값이 짝수 -> "짝", 홀수 -> "홀"
let res = var8 % 2 === 0 ? "짝수" : "홀수";
console.log(res);
1.9) 조건문
// 1. if 조건문 (if문)
let num = 4;
if (num >= 10) {
// console.log("num은 10 이상입니다");
// console.log("조건이 참 입니다!");
} else if (num >= 5) {
// console.log("num은 5 이상입니다");
} else if (num >= 3) {
// console.log("num은 3 이상입니다");
} else {
// console.log("조건이 거짓입니다!");
}
// 2. Switch 문
// -> if문과 기능 자체는 동일
// -> 다수의 조건을 처리할 때 if보다 더 직관적이다.
let animal = "owl";
switch (animal) {
case "cat": {
console.log("고양이");
break;
}
case "dog": {
console.log("강아지");
break;
}
case "bear": {
console.log("곰");
break;
}
case "snake": {
console.log("뱀");
break;
}
case "tiger": {
console.log("호랑이");
break;
}
default: {
console.log("그런 동물은 전 모릅니다");
}
}
1.10) 반복문
for (let idx = 1; idx <= 10; idx++) {
if (idx % 2 === 0) {
continue;
}
console.log(idx);
if (idx >= 5) {
break;
}
}
1.11) 함수
// 함수
let area1 = getArea(10, 20);
console.log(area1);
let area2 = getArea(30, 20);
console.log(area2);
getArea(120, 200);
// 호이스팅
// -> 끌어올리다 라는 뜻
function getArea(width, height) {
function another() {
// 중첩 함수
console.log("another");
}
another();
let area = width * height;
return area;
}
1.12) 함수 표현식과 화살표 함수
// 1. 함수 표현식
function funcA() {
// console.log("funcA");
}
let varA = funcA;
varA();
// function 이후 함수 이름 생략 가능
// 함수 선언의 개념이 아닌 그저 함수 내용 삽입 개념
// 따라서 함수의 이름이 별도로 필요하지도 않고, 이름을 별도로 지정하더라도
// 함수 자체만 호출이 불가능 (EX: funcB(); //error )
let varB = function funcB () {
// console.log("funcB");
};
varB();
// 2. 화살표 함수
let varC = (value) => {
console.log(value);
return value + 1;
};
console.log(varC(10));
1.13) 콜백함수