배열에 대한 기초를 공부해보자.
const friend1 = 'Michael';
const friend2 = 'Steven';
const friend3 = 'Peter';
const friends = ['Michael','Stenven','Peter'];
console.log(friends);
const years = new Array(1991, 1984, 2008, 2020);
console.log(friends[0]);
console.log(friends[2]);
console.log(friends.length);
console.log(friends[friends.length -1]);
friends[2] = 'Jay';
console.log(friends);
Array를 만들어주는 방식은 두가지가 있다.
const friends = ['Michael','Stenven','Peter'];
const years = new Array(1991, 1984, 2008, 2020);
배열의 각 요소는 표현식(expression)일 수 있다. 따라서 변수명이나 계산식을 요소로 사용할 수 있다
const firstName = 'Jonas'
const jonas = [firstName, 'Lee', 2037 - 1991, 'teacher', friends];
첫번째의 코드에서 이 부분을 보고 의문이 들 수가 있다.
friends[2] = 'Jay';
const
로 배열을 정의해줬는데 그 배열중 하나의 요소의 값을 바꿔주는 코드이기 때문이다. 전에 const로 정의해준 변수는 값을 바꿀 수 없다고 했는데 어떻게 이게 가능한 것일까? 그 이유는 const로 정의해준 primitive values만 바꿔줄 수 없기 때문이다. preimitive values는 아래와 같다.
primitive data
이건 값 자체가 메모리에 저장된다고 한다.
1.number ex) let age = 23;
2.string ex) let firstName = 'Jonas';
3.boolean ex) let fullAge = true;
4.undefined ex )let children;
5.null
6.symbol
7.biglnt_
배열은 객체이기 때문에 const로 정의해도 배열의 요소를 변경할 수 있다. 하지만 배열의 한 원소를 바꾸는게 아니라 전체적으로 array를 바꾸려고 하면 에러가 뜬다. 예를 들어 아래의 코드과 같이 말이다.
friends = ['Bob', 'Alice']
다음으로, 배열을 함수의 인수로 사용하는 예를 보자:
function calcAge(birthYear){
return 2037 - birthYear;
}
const years = [ 1990, 1967, 2002, 2010, 2018];
console.log(calcAge(years));
이런식으로 쓰면 코드가 작동이 안된다. years를 calcAge 함수의 argument로 넣어줬는데 배열로 넣어주었으므로 2037 - [1990, 1967, 2002, 2010, 2018]
이렇게 되는데 숫자와 숫자가 아닌것을 빼주었으므로 NaN이 나온다.
그래서 값이 나오게 하려면 배열의 요소를 개별적으로 꺼내서 함수에 전달해야 한다.
const calcAge = function (birthYear) {
return 2037 - birthYear;
}
const years = [1991,1967,2002,2010,2018]
const age1 =calcAge(years[0]);
const age2 =calcAge(years[1]);
const age3 = calcAge(years[years.length - 1]);
console.log(age1, age2, age3);
이렇게 배열의 각 요소를 개별적으로 함수에 전달하면 원하는 결과를 얻을 수 있다.