[JS] '-1'이라는 index

EJ__OH·2021년 11월 5일
1
post-thumbnail

Javascript를 사용할 때 array 데이터타입을 사용할 경우가 정말 많고, 그 중 index를 통해 array 안에 담겨있는 요소들에 접근해야 하는 경우가 정말 많다.

이때 index는 0부터 시작하는데 그렇기 때문에 array의 마지막 요소에 접근하는 코드는 다음과 같다.

array[array.length - 1]

array 내장 프로퍼티인 .length프로퍼티로 array 전체의 길이를 정수로 구하고 1을 빼게 되면 마지막 요소에 indexing 할 수 있다.

그러나 파이썬을 포함한 많은 프로그래밍 언어에서는 negative index를 지원한다. 즉 파이썬에서 list의 마지막 요소에 접근하기 위해선

list[-1]

위의 코드도 가능하며 많이 사용된다.

그러나 멋쟁이 우리의 javascrit ! negative index와 같은 기능을 허락할 리가 없다 ! javasciprt가 만들어져 ES5를 거쳐 계속하며 발전하였는데도 구현되지 않은 이유가 궁금했다.

물론 array[-1]가 심각한 오류를 표하지는 않는다. 다만 마지막 요소로 접근하는 것이 아니라 1, 2, 3 등과 같이 -1 이라는 index를 갖는 요소에 접근하고 대부분 지정하지 않기에 undefined가 반환되기 마련이다.

명쾌한 답변이 존재하진 않았지만 array 내장 메서드 .indexOf() 때문이라는 설명이 가장 설득력이 높았다. 먼저 .indexOf() 메서드는 해당 array에 argument로 들어가는 요소의 가장 첫 index를 구해주는 메서드이다. 이때 만약 argument로 들어가는 요소가 해당 array에 존재하지 않는다면 return 값은 -1 이게 된다.

그래서

const arr = [1, 2, 3, 4, 5]
if(arr.indexOf(6) !== -1){
	~~~~
    ~~~~
}

와 같이 특정 argument가 array에 있을 때 함수가 작동하는 로직을 구현하기 위해 많이 쓰이는데 만약 negative index가 정상작동 한다면 원하는 로직으로 구현되지 않을 것이다.

그렇기 때문에 계속해서 발전하는 javascript가 negative index를 사용할 수 없다는 썰이 가장 설득력있었다.

참고링크
https://stackoverflow.com/questions/54066261/why-cant-i-do-array-1-in-javascript

profile
Junior FE Developer

0개의 댓글

Powered by GraphCDN, the GraphQL CDN