자바스크립트 기초 배열 문법 질문

자바스크립트 기초 배열 문법 질문

작성일 2020.12.14댓글 2건
    게시물 수정 , 삭제는 로그인 필요

안녕하세요
이제 막 자바스크립트를 공부하는 초보자입니다. 배열을 배우고 있는데 궁금한 점이 있습니다.


var fruits = ['사과','배','바나나'];

var newArr = fruits.reverse();
document.write(fruits+'<br/>'); -----------1
document.write(newArr+'<br/>'); -----------2


1번과 2번 둘다 거꾸로 출력이 되는데 어떤 것이 정답일까요? ㅠㅠ


#자바스크립트 기초 #자바스크립트 기초 문법 #자바스크립트 기초 예제 #자바스크립트 기초 문제 #자바스크립트 기초 강의 #자바스크립트 기초 책 #자바스크립트 기초 pdf #자바스크립트 기초 강좌 #자바스크립트 기초책 추천 #자바스크립트 계산기 기초

profile_image 익명 작성일 -

안녕하세요 지나다가 질문글을 보고 그냥 지나 칠 수 없어 답변드립니다.

질문주신 내용은 간단해 보이지만 사실 심오하다고도 할 수 있는 자바스크립트 문제입니다.

1. 우선 1차적으로 왜 같은 결과가 나왔는지 알려드릴게요

var fruits = ['사과','배','바나나']; var newArr = fruits.reverse();

쉽게 생각해버리면 fruits에는 사과,배,바나나가 있고, newArr에는 fruits를 reverse한 배열을 넣어야지 라는 의도가 보이는데,

사실 reverse()는 newArr가 바라보는 배열을 바꿔버립니다.

newArr = fruits 이고 이것을 reverse 가 되어 버린거죠. (즉 newArr= fruits.reverse = fruits.reverse())

newArr = (fruits와 같은 아이템의 배열을 만들고) 이것을 new Arr에 담은 후 reverse 가 되어야 하는 겁니다.

fruits에 reverse를 붙일게 아니고,

newArr에 fruits 와 같은 아이템을 가진 배열을 만들고 그 후에 reverse 시키는 작업 필요하겠죠

그래서 해결방법은

var fruits = ["사과", "배", "바나나"]; var newArr = new Array(...fruits).reverse(); console.log(fruits, newArr);

가 될 것입니다. 여기서 ...은 배열의 [ ] 표시를 벗겨내고 아이템들만 가져온것이고,

이것으로 new Array 새로운 배열을 만들었는 것 입니다.

조금 간단한 방법으로는

var fruits = ["사과", "배", "바나나"]; var newArr = [...fruits].reverse(); console.log(fruits, newArr);

new Array 대신 []로 새로운 배열을 선언하고 그안에 ...fruits를 넣어 결국 fruits가 아닌 새로 만든 배열을 reverse 하는 것입니다.

위의 설명 내용은 분명 자바스크립트를 처음 이해하는 입장에서는 매우 혼동스럽고 이해하기 어려운 개념입니다.

더불어 var 를 변수로 사용하고 계시는데 이는 사실 더 이상 사용하지 않는것이 좋습니다.

저는 작은 유투브 채널을 운영중입니다.

답변이 도움이 되셨다면 시간나실때 한번 둘러봐주시면 감사하겠습니다.

https://www.youtube.com/channel/UC1wWTimSew9rYzEZRVYVlbg/videos?view_as=subscriber

profile_image 익명 작성일 -

var fruits = ['사과','배','바나나'];

var d=fruits.join(",")

document.write(d+'<br/>');

자바스크립트 문법 질문입니다.

자바스크립트 문자열 세팅 질문드립니다. 문자열 0번째 index에는 hex 값으로 0xfe 를... 이렇게 하면 원하는 바이트 배열을 얻을 수 있습니다. 이 배열을 문자열로...

자바스크립트 기초 질문

자바스크립트 입문자인데요, 자바스크립트에서 addEventListener 에 인수로... 객체나 배열이나 다른 함수들에도 그런 기본값들이 있을텐데 그런걸...