어제에 이어 자바스크립트 기초 내용부터 배우기 시작했다.
복습을 하며 부족한 부분을 중점적으로 필기했다.
변수 선언 방법 3가지 및 차이점, 자바스크립트 프로그래밍 용어, 연습 문제 풀기를 했다. 이미 아는 내용이었지만 이론을 깔끔하게 정리할 수 있어서 좋았다. 특히 var
, let
, const
의 차이점을 명확히 하고 호이스팅 및 TDZ에 대해 복습하고 정리했다. 연습 문제는 수월하게 풀었으나 let
과 const
를 사용할 때 생각없이 사용한다는 사실을 알게 됐다. 변할 일이 없을 것 같은 변수는 꼭 const로 선언하자!
내가 선언한 변수가 다른 스크립트 파일의 동명의 변수에 의해 덮어씌워져서 모른다면(인지할 수 없음) 큰 오류를 발생할 수 있음
const num = 10;
const
num
=
, +
10
10+20
undefined
: 자바스크립트 엔진이 다루는 값undefined
를 넣어줌null
: 의도가 있는 값undefined
와 null
둘 다 데이터가 없는 것❓var
로 변수를 선언했을 때 호이스팅에 의해 변수가 undefined
가 되는 상황에서 undefined
가 "할당"된다고 표현해도 되나?
❗실행 컨텍스트와 관련이 있는데, 지금 단계에서는 할당한다고 표현해도 됨!
절대로 중복되지 않는 유니크한 값을 생성함
const t = Symbol("회원 테이블의 고유한 id 값으로 사용하기 위해")
const a = Symbol();
여러 개의 값을 묶어둔 값
여러 개의 값을 묶어둔 값
scoreObj.englishScore
scoreObj[”koreanScore”]
❓기본 자료형과 참조 자료형을 나누는 기준
❗값을 할당하는 방식이 다르다
const arr1 = [10, 20];
const arr2 = [10, 20];
console.log(arr1 === arr2) // false
let num = [];
console.log(typeof num); // object 자바스크립트의 버그
++num
~~하기 전에
할당하기 전에 증가시키고 할당해라
let num = 10;
const incrementNum = ++num;
console.log(incrementNum) // 11
num++
let num = 10;
const incrementNum = num++;
console.log(incrementNum) // 10
y
에 숫자 7을 할당하세요.y
를 1 증가시키고, 증가하기 전과 후의 값을 각각 출력하세요.y
를 1 감소시키고, 감소하기 전과 후의 값을 각각 출력하세요.y
를 1 증가시키고, 증가한 값을 출력하세요.y
를 1 감소시키고, 감소한 값을 출력하세요.let y = 7;
console.log(y); // 증가하기 전 : 7
console.log(y++); //증가한 후 : 7
console.log(y); // 감소하기전 : 8
console.log(y--); // 감소한후 : 8
// y = 7
console.log(++y); // 증가한값 8
// y = 8
console.log(--y); // 감소한값: 7
==
및 부등 연산자 !=
는 암묵적 형변환을 하기 때문에 실무에서는 사용을 피해야함 (일치 연산자 사용하기)if
문 내부 코드가 한줄이면 생략가능하다if(isLoggedIn) message= "로그인 되었습니다";
else message="로그인이 필요합니다.";
if
vs. else if
: 상황에 따라 다르지만 퍼포먼스적으로 else if
가 더 좋을 때가 있다. 이런 것들을 생각하면서 코드를 짜자.break
의 사용위치가 중요함const area = '제주도';
let baesongbi = 0;
switch (area) {
case '서울':
case '인천':
case '남양주':
baesongbi = 3000;
break;
case '강원도':
baesongbi = 3500;
break;
default:
baesongbi = 10000;
}
console.log(baesongbi);
어떤 내용을 한 번은 실행시키고 반복하려고 할 때 유용하게 사용할 수 있는 문법
do{
//무조건 한 번은 실행
//한 번 이후에는 expr이 참이면 실행
}while(expr);
배열이나 객체를 반복할 때 사용
let arr = ["banana", "apple", "orange"];
let obj = {name:"철수", age:20};
for(let index in arr){
console.log(arr[index]);
}
for(let key in obj){
console.log(obj[key]);
}
배열에만 쓸 수 있음. 대신 배열의 인덱스가 아닌 값에 직접적으로 접근함
for (let value of arr) {
console.log(value)
}
함수는 하나의 특별한 목적을 가지고 코드를 실행하도록 만드는 문법
function gugudan () {}
gugudan(); // 호출
const gugudan = function () {}
gugudan(); // 호출
const gugudan = function name() {}
gugudan(); // 호출
❓함수 선언식, 익명 함수, 기명 함수 중 어떤걸 사용해야 하나요?
❗프레임워크에서 권장하는 방법을 상황에 맞춰서 사용하기. 단, 기명 함수를 사용하는 게 정석이긴 하지만 실무에서는 익명 함수를 더 많이 사용하기는 한다.
function add(a, b, c) {
console.log(a+b+c)
}
add(10, 20); // 두 수만 더하고 싶을 때는 NaN이 나옴
add(10, 20, 30);
나머지 매개변수 이용
function add(...args) {
let sum = 0;
for (let i = 0; i < args.length; i++) {
sum += args[i];
console.log(sum);
}
add(10, 20);
add(10, 20, 30);
function add(a, b, ...args) {
console.log(a, b, args);
}
add(10, 20, 30, 40, 50);
arguments
arguments
: 유사배열 객체function add() {
}
console.dir(add)
return;
의 적확한 의미는 함수 종료가 아닌 undefined
반환임//외부 함수
function membershipCard() {
//내부 함수
return function () {
return {
name: "수코딩 온라인 사이트",
grade: "basic"
};
};
};
console.log(membershipCard()());
return
하는 법: 소괄호로 묶어주기const membershipCard = () => ({
name: "수코딩 온라인 사이트",
grade: "basic"
})
const membershipCard = sitename => ({
name: `${sitename} 온라인 사이트`,
grade: "basic"
})
const membership = membershipCarp("스나이퍼 팩토리");
return
키워드를 사용하지 않고 화살표 함수로 바꾸기function membershipCard() {
return function () {
return function () {
return {
name: "수코딩 온라인 사이트",
grade: "basic",
};
};
};
}
답
const membershipCard = () => () => () => ({
name: '수코딩 온라인 사이트',
grade: 'basic',
});
console.log(membershipCard()()());
else if
대신 if
를 사용할 수 있다는 사실은 알고 있었지만 퍼포먼스가 차이가 있을 거라는 생각은 하지 못했는데 이번 기회를 통해 코드를 짤 때 성능에 대해서도 생각해보자고 다짐했다.for..in
문과 for..of
문의 차이를 명확히 몰랐는데 이번에 명확히 함