1. 현재의 무드: 해당 내용 또한 스터디 디코에서 다른 스터디원분이 질문해주신 내용! 흥미롭고 배운 점이 많아 정리해둡니다.
2. 오늘 학습한 내용 중 키워드: 배열 메서드 .pop(), .shift(), 매개변수와 인자
3. 오늘 학습한 내용 요약
let arr = [1, 2, 3, 4]
arr.pop() // 4
console.log (arr) // [1, 2, 3]
arr.shift() // 1
console.log (arr) // [2, 3]
이처럼, .pop() 과 .shift() 는 각각 배열의 맨 마지막 요소 값과 맨 첫 요소 값을 제거해주는 역할을 합니다.
그런데, 문제는
let arr = [1, 2, 3, 4]
arr.pop(6) // 4
console.log (arr) // [1, 2, 3]
arr.shift(10) // 1
console.log (arr) // [2, 3]
이렇게, 소괄호 내에 제거하려는 값과 다른 값을 넣어도 정상적으로 메서드가 작동합니다.
왜 그럴까요?
정답은, .pop()과 .shift() 메서드에서 인자 값을 요청하는 부분이 비어있기 때문입니다.
즉, 요청한 매개변수가 아예 없기 때문에, 인자를 아무거나 집어넣어도 그 값은 무시됩니다.
이것은 함수의 매개변수-전달인자를 생각하면 이해가 더 잘 되는데요!
function plusNum (num, plus) {
return num + plus
}
plusNum(1, 2) // 3
plusNum(1, 2, 3) // 3
위 코드처럼, (num, plus) 라는 두개의 매개변수만 가진 함수에 (1, 2, 3) 이라는 인자를 집어넣으면, 마지막 3 값은 무시됩니다.
그래서 .pop(5), .shift(381) 도 정상 작동 되는 것입니다.
참고로, 매개변수가 (num, plus) 인 함수에 (1) 만 집어넣으면, num = 1 로 들어가고, plus는 할당된 값이 없기 때문에 undefined로 판단하여 함수가 작동된다고 합니다.
'에러 디버깅 & 리팩토링' 카테고리의 다른 글
Intersection Observer API 이용하여 무한스크롤 구현하기 / useEffect 의존성 배열 문제 해결하기 (0) | 2023.05.29 |
---|---|
Intersection Observer API 이용하여 무한스크롤 구현하기 / 교차 전에 콜백함수가 실행되는 오류 해결 (1) | 2023.05.29 |
Git 에러: Updates were rejected because the remote contains work that you do not have locally (0) | 2023.04.08 |
자바스크립트 const로 array 선언하면 일어나는 일 (0) | 2022.11.03 |
자바스크립트 메서드에 괄호가 누락된 경우? .toLowerCase() (0) | 2022.10.25 |