제가 다른 글에서 쓴 답글이 거의 똑같은 답변이 되리라 생각합니다.
다만 두번째 경우엔 변수의 범위(주로 영어로 scope라고 많이 함)가 자바스크립트 언어에서 어떻게 작용하는지 이해가 필요한 부분입니다.
randomNumbers
라는 변수는 두번째의 경우 Array.prototype.filter
를 호출하는 객체와, 그 filter
함수 안에서 호출되는 함수의 매개 변수 randomNumbers
가 있습니다. 이 경우 익명 함수 안의 randomNumbers
가 내부 스코프로서 작용합니다.
그렇다면 변수 접근의 우선권이 자바스크립트에선 내부 스코프에게 있으므로, 외부의 randomNumbers
는 함수 안에서 아무런 변화가 없습니다. 물론 함수 안에서 명령을 실행도 어떠한 충돌이 없고요.
다만 외부의 randomNumbers
를 내부 스코프에서 접근하고 싶다면, 자바스크립트에선 변수 이름을 다르게 해서 외부 변수에 접근하는 방법밖에 없습니다.