😎단축평가.. 정확히 뭐였지
true || anything // true
false || anything // anything
true && anything // anything
false && anything // false
어제 페어분께 단축 평가에 대해 설명을 했는데 말을 하면 할 수록 뭔가.. 뭔가였다.
대충 내 인식으로는
||연산자는 좌항이 false일때 우항 반환
&&연산자는 좌항이 true일때 우항 반환
평가는 좌항 -> 우항 순으로 진행한다. 정도였는데
뭔가..뭔가 동작이 내 생각이랑 달랐다.
||연산자는 너무 익숙하게 사용하지만
&&연산자는 잘 사용하지 않아서그런지 뇌절이 와버림
그냥 외우는게 나을듯 ㄹㅇㅋㅋ
😎 자바스크립트의 배열은 사실 배열이 아니다.
이미 딥다이브에서 본 내용이지만...
일반적인 형태의 배열은 연속성과 인접성을 가지지만..
자바스크립트는 해쉬맵이면서 링크드리스트에 가까운 형태로 배열을 구현한다.
사실 난 입문을 자바스크립트로 해서 자바스크립트식 배열이 더 편안하지만
다른 언어를 하다 온 사람들에겐 많이 혼란스러운 부분인듯
그런데 어떤 최적화기법을 도입했길래
자바스크립트 배열은 진짜 배열과 비슷할정도로 빠른 속도를 가지게 된 것일까?
했는데 컴파일러가 같은 타입을 가진 배열은 연속적인 메모리를 가지고 있는 배열로 변환한다고 한다...
정말 놀랍네요
😎멱등성이 뭐임?
동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고,
서버의 상태도 동일하게 남을 때, 해당 HTTP 메서드가 멱등성을 가졌다고 말합니다.
다른 말로는, 멱등성 메서드에는 통계 기록 등을 제외하면 어떠한 부수 효과(side effect)도 존재해서는 안됩니다.
올바르게 구현한 경우 GET HEAD PUT DELETE 메서드는 멱등성을 가지며,
POST 메서드는 그렇지 않습니다. 모든 안전한 메서드는 멱등성도 가집니다.
MDN의 설명에 따르면 이런데 대충 함수형 프로그래밍이란 비슷한 느낌이네요
사이드 이펙트 안돼 같은 인풋엔 같은 아웃풋만 나와야해 이런 부분에서 비슷한 느낌
😎불변성 왜 지켜야함?
리액트 공부를 하면서 대충 이래서 그렇구나라고는 생각했지만
좀 더 큰 원인을 보지 못하고 있던 나는
미시적?인 관점으로밖에 생각을 못하고 있었던 것 같다.
프론트엔드에서 불변성이 중요한 이유는 리액트가 한몫한 것 같은데..
그 불변성을 지켜주기 위해서 filter, map 등 원본배열을 변경하지않는 메서드들을 적극 사용하는 이유는
원본이 변경되어 버리면 즉 불변성이 깨져버리면
리액트는 이전 상태와 현재 상태를 비교하여 변경된 부분을 리렌더링해줘야 할 것이
기대와 다르게 동작하게 될 가능성이 생긴다는 것이다!
비교할 상태가 같이 변경되어 버릴 시 개발자는 내용이 바뀌었고
렌더링이 새로 되기를 기대하지만 실제로는 동작이 꼬여버리는 결과를 낳을 수 있다는 점에서
그 중요성이 강조되었던 것 같다.
그런데 객체지향 프로그래밍과 불변성은 양립하기 어려운 개념이라는 것..
객체지향 프로그래밍은 Private, public같은 키워드를 통해
바깥으로 노출시킬 상태만 보여주면서 그 상태를 변경시킬 방법과 같은 것들은
감추는 방식으로 구현하니까!!
자바스크립트에는 비록 private같은 키워드는 없지만
클로저를 통해 외부에서 값의 상태변경을 막는 기법을 사용할 수 있기도하고
그런데 불변성을 유지하는건 값을 애초에 변경을 안하면 걱정이 없다는 개념인거임 ㄷㄷ;;
그리고 전역변수의 사용을 극히 제한하는 코딩스타일도 결국
전역변수가 의도치않게 변경될 가능성을 없애기 위해서 한다는 거임 ㄷㄷㄷㄷㄷ;
😎 주말을 위한 스터디는 없다
스터디 지원자 최저를 찍었다. 나포함 세명
함께해주신 두분께 감사드립니다..
반응형
'TIL' 카테고리의 다른 글
javascript koans (0) | 2023.03.03 |
---|---|
에라토스테네스의 체 소수 찾기 알고리즘을 자바스크립트로..? (0) | 2023.02.22 |
2.20 TIL (0) | 2023.02.20 |
02.17 TIL 계산기 목업 만들기 (0) | 2023.02.17 |
02.16 TIL 완전탐색, flex (0) | 2023.02.16 |