TIL_2020.03.28(토) - 배열의 주소참조, 함수형 프로그래밍

nRecode·2020년 3월 28일
0

TodayILearned

목록 보기
6/95

[]의 차이
변수가 빈 배열일때는 0으로 예외 처리하는 문제에서

if(객체.length === 0) return 0;

으로 하면 정상적으로 작동하고,



if(객체 === []) return 0;

으로 하면 왜 오류가 나는지 궁금해 하고 있었는데 코드스테이츠 help desk로 힌트를 찾고 더 써치해 보았다.

이유는 이 에서 찾을 수 있었다. 표면적인 이유는 []와 []가 다르기 때문인데 Array, Function, Object는 값이 아닌 참조에 의해서 전달 되기 때문이었다. 변수를 빈 배열로 할당했을때, 메모리 내부에 배열을 만든 것입니다. 변수가 갖는 것은 그 배열이 위치한 주소라는 것이다. 이는 콘솔에서 한번 더 확인할 수 있었다.

//참조에 의한 전달
arr = [1,2,30];
(3) [1, 2, 30]
arr
(3) [1, 2, 30]
arr === [1,2,30]
false

//값에 의한 전달
num = 2;
2
num
2
num === 2
true

Reference
자바스크립트 개발자라면 알아야 할 33가지 개념 #3 값(value) vs 참조(reference) (번역)

함수형 프로그래밍으로 바꿔보기
어제 못했던 6_17번 문제를 for문이 아닌 함수형 프로그래밍으로 바꾸는 방법을 공부했다. 확실히 이해는 했지만 내가 적용시킬 수 있는진 잘 모르겠다... 그래도 reduce를 사용할때

변수명.reduce(function(acc,cur){});
변수명.reduce((acc,cur)=>{});

이 같은 문장이라는 것도 확인했고 알고리즘의 로직도 이해를 해서 조금은 만족스럽다!

profile
안정성, 확장성 있는 서버를 구축하고 가꾸는 개발자를 목표로 공부하고 있습니다. 🤔🤔🤔🤔 부족하기에 맞지 않는 내용이 있을 수 있습니다. 가감없이 피드백 해주시면 정말 감사하겠습니다..🙏

0개의 댓글