TypeScript&JavaScript/JavaScript(17)
-
undefined와 null
undefined와 null undefined를 자바스크립트 엔진이 자동으로 부여할 때 - 값을 대입하지 않은 변수, 즉 데이터 영역의 메모리 주소를 지정하지 않은 식별자에 접근할 때 - 객체 내부의 존재하지 않는 프로퍼티에 접근하려고 할 때 - return 문이 없거나 호출되지 않는 함수의 실행 결과 배열에서 사용자가 직접 undefined를 할당할 경우 배열 요소를 순회하는 것과 관련된 배열 메서드의 순회 대상이 되지만 비어있으면 순회 대상에서 제외된다. forEach, map, filter, reduce 등이 다른 결과를 나타냄 배열도 객체인걸 생각하면 존재하지 않는 프로퍼티에 대해 순회할 수 없다. 배열은 특정 인덱스에 값을 지정할 때 비로소 빈 공간을 확보하고 인덱스를 이름으로 지정하고 데이터의..
2020.07.19 -
불변객체와 얕은복사, 깊은 복사
불변객체(immutable object) 객체는 참조(reference) 형태로 전달하고 전달 받는다. 객체가 참조를 통해 공유되어 있다면 그 상태가 언제든지 변경될 수 있기 때문에 문제가 될 가능성도 커지게 된다. 이는 객체의 참조를 가지고 있는 어떤 장소에서 객체를 변경하면 참조를 공유하는 모든 장소에서 그 영향을 받기 때문인데 이것이 의도한 동작이 아니라면 참조를 가지고 있는 다른 장소에 변경 사실을 통지하고 대처하는 추가 대응이 필요하다. 의도하지 않은 객체의 변경이 발생하는 원인의 대다수는 “레퍼런스를 참조한 다른 객체에서 객체를 변경”하기 때문이다. 이 문제의 해결 방법은 비용은 조금 들지만 객체를 불변객체로 만들어 프로퍼티의 변경을 방지하며 객체의 변경이 필요한 경우에는 참조가 아닌 객체의 ..
2020.07.19 -
데이터타입과 변수
자바스크립트는 메모리 공간을 비교적 넉넉하게 사용. 숫자의 경우 기본 8바이트 (1비트는 +- 부호, 11비트는 지수부, 52비트 가수부) 모든 데이터는 메모리 주솟값을 통해 서로 구분하고 연결할 수 있다. 변수 - 변경 가능한 데이터가 담길 수 있는 공간 : 변할 수 있는 데이터를 담는 공간을 만든다. 이 데이터의 식별자는 a로 한다 ->let a 변수명은 공간의 이름, 식별자 변수영역과 데이터 영역 정확히는 식별자의 메모리 주소값의 '값'에는 데이터가 저장된 메모리 주소값이 들어간다. 장점은 메모리 용량의 가변성 보장 이렇게 할 경우 변수의 데이터를 변경할 경우 변경될 데이터를 새 메모리 공간에 넣고 값에 저장된 주소값을 변경 이 때, 주소값이 저장된 곳이 하나도 없을 경우 해당 메모리는 가비지 컬렉..
2020.07.19 -
"" 와 0
자바스크립트로 코테문제를 풀면서 배열에서 값을 아예 지우거나 하는게 번거로워서 중복을 피하기 위해 '' 등으로 공백을 넣곤했다 문제는 이게 0이랑 같게 판단한다는걸 깜빡했는데 아주 기초적인 부분을 놓친셈이다. undefined, null NaN 0 (숫자 리터럴) , -0 “” (빈 문자열) false 위는 자바스크립트에서 false로 동일하게 판단하는 것들이다. 꼭 기억해두자.
2020.06.21 -
Truthy, Falsy, 단축 평가 논리 계산법, 함수 기본파라메터
자바스크립트에서 false가 기본인 몇 가지 값들이 있다. 이외에는 전부 기본적으로 true를 반환한다.(boolean에서) 위 5가지의 값에 부정형(!)을 붙이면 true를 반환하게된다. 마찬가지로, truthy한 대부분의 값에 !를 붙이면 false를 반환한다. 이러한 특징은 삼항연산자와 함께 이용한다면 조건문의 길이를 줄여서 간결하게 코딩을 하는 것에 도움이 된다. //falsy console.log(!undefined); console.log(!null); console.log(!0); console.log(!''); console.log(!NaN); 단축 평가 논리 계산법은 논리연산자를 이용해 코드를 단축하는 방식에 가깝다. 개인적으로는 여러사람과 협업할 경우 이러한 표현방식이 사람들과 일반적으..
2020.04.20 -
자바스크립트에서 배열과 객체를 다룰 때 유용한 문법과 함수정리-2
Map은 배열 안의 원소를 변환하고 싶을 때 사용 indexOf는 객체가 아닌 원소의 위치를 찾는데 사용 findIndex는 객체나 조건에 따른 인덱스를 찾을 때 사용 find는 해당 조건과 일치하는 객체를 반환할 때 사용 filter는 특정 조건의 원소들을 찾아 새 배열을 생성 splice는 특정 원소를 제거할 때 사용. 인자로 인덱스가 필요하다. 제거된 원소를 반환한다 slice는 특정 인덱스부터 인덱스까지 원소를 자를 때 사용, 원래의 배열에는 영향을 끼치지 않는다. 자른 범위의 원소를 반환한다. shift 배열에서 맨 앞부터 순서대로 특정 요소를 뺀다 unshift 배열의 맨 앞부분에 원소를 추가한다 pop은 배열 맨 뒤에서 부터 순서대로 특정 요소를 뺀다. push는 배열 맨 뒤에 특정 원소를 ..
2020.04.16