w3schools에서 공부하다고 정리를 따로 안해놓으니 돌아서면 까먹고 제대로 공부가 안되는 것 같아 여기다가 정리해서 올려놓도록 하겠다.
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Array.forEach()</h2>
<p>Iteration 공부</p>
<p id="demo"></p>
<script>
const numbers = [1, 4, 9, 16, 25];
let txt = "";
numbers.forEach(myFunction);
document.getElementById("demo").innerHTML = txt;
function myFunction(value) {
txt += value + "<br>";
}
</script>
</body>
</html>
매개변수로 함수를 받는다. 여기서 value는 함수를 부른 배열 numbers의 값들을 가리키는 것이다.
하나씩 순서대로 출력되는 걸 알 수 있다.
기존 배열에서 값들을 추출해서 새로운 배열을 생성한다는 특징이 있다.
(index, array는 없어도 코드를 실행하는 데 문제없다.)
메소드를 실행하는 배열을 복사 후 개수를 줄여서 새로운 배열 및 변수를 만들어내는 메소드
하나씩 추출해서 함수를 거쳐 하나의 값으로 출력된다.
(원래 배열은 건들지 않는다.)
배열 안의 수가 매개함수의 조건식을 모두 통과하면 true, 아니면 false 값을 반환한다.
이와 반대로, some() 메소드는 배열의 값중 하나라도 조건식을 통과하면 true 값을 반환한다.
value의 위치를 반환한다.
함수의 조건식을 만족한 첫번째 값을 반환한다.
다른 배열이나 문자열 등을 ()안에 넣어서 하나의 배열로 출력하게 하는 메소드
entries() 메소드는 key/value 쌍을 반환하는 메소드이다.(key의 경우, index로 생각할 수도 있다.)
배열에 찾고자 하는 값이 있는지 확인할 수 있는 메소드
있으면 true, 없으면 false 이다.
배열 이름 앞에 ...을 붙어서 배열의 요소들을 하나로 나타낸다.
const로 선언된 array
그렇다고 배열이 고정된 값을 가진다는 게 아니다. 아래 사진을 보자.
이렇게 배열을 바꾸는 것은 안되지만,
const array의 요소 값을 바꾸는 것은 가능하다.
또한, const로 선언된 배열은 무조건 초기화를 해 주어야 한다. (var로 선언할 경우, 아무 때나 초기화가 가능하다.) const로 선언된 배열은 같은 범위에서 재선언이 불가능하다.
또한, const로 선언된 배열은 block 단위({} 단위)의 범위를 가진다. 아래 사진을 보자.
괄호 안에서 선언된 cars 배열과 괄호 밖에서 선언된 cars 배열은 서로 다른 배열이다.
그러나 var로 선언할 경우, var은 block 단위의 범위 이상을 가지기 때문에 값의 초기화가 일어난다.
var 선언 배열과 const 선언 배열의 차이를 한번 다시 살펴보자.
const로 한번 선언된 배열은 var나 let으로 다시 선언이 불가능하다.