75

const에 array, object 재할당

const는 기본적으로 재할당이 불가능하다. 그러나 const에 배열이나 객체를 할당하였을 때, 그 배열/객체에 새로운 요소를 추가/삭제 혹은 속성을 추가/삭제 할 수 있다. 이는 const로 선언된 변수에 기본적으로 재할당이 불가능하다는 원칙은 배열/객체의 '주소'가 변경되지 않는다는 것으로 지키고 있기 때문에, 해당 주소 안의 값은 변경할 수 있기 때문으로 보인다.

CLI 기본

명령어 $ man ** 을 커맨드를 입력하면 각 명령어의 옵션을 검색 할 수 있다. (ex. $ man ls) ls : 파일 보기 cd : 디렉토리 이동 touch [file_name] : 빈 파일 생성 mkdir [dir_name] : 디렉토리 생성 cat [file_name] : 텍스트 형태의 파일 열기 mv [file_or_dir] [target_dir] : 파일 및 디렉토리 옮기기 mv [file_or_dir] [new_name] : 파일 및 디렉토리 이름 바꾸기 cp [file] [target_dir] : 복사 cp -r [folder] [target_dir] : 폴더 복사 rm [filename] : 삭제 rm -r [dirname] : 폴더 삭제 chown [user_name]:[group_..

2021.01.27

three dots (...)

three dots(...) 자바스크립트에서 three dots(...)는 두 가지 역할을 한다. 하나는 Array/Object spread operator, 나머지는 Rest operator다. Array/Object spread operator 배열과 객체를 펼친다. => 그 안의 요소를 개별적으로 뽑는다. 다음의 예를 보면 이해하기가 쉽다. const adrian = { fullName: 'Adrian Oprea', occupation: 'Software developer', age: 31, website: 'https://oprea.rocks' }; const bill = { ...adrian, fullName: 'Bill Gates', website: 'https://microsoft.com' ..

scope & closer

let const var 유효 범위 Block Scope Block Scope Function Scope 값 재정의 가능 불가능 가능 재선언 불가능 불가능 가능 Block Scope는 '{ }'를 scope 기준으로 삼는다. 따라서 if, function, for 등 '{}' 안에서 사용되면 그 안에만 적용된다. Fucntion Scope는 함수를 단위로 한다. 따라서 if, for 문에서 어떤 변수가 정의 된다면, 그 정의된 변수는 밖으로 빠져나온다. 전역 변수와 Window 객체 Global Scope에서 선언된 함수, 그리고 var를 이용해 선언된 변수는 window 객체에 들어간다. window; 선언 없이 초기화된 변수 변수를 선언없이 초기화하면 '무조건' window 객체 아래로 들어가고 전역..

왜 typeof null은 object일까.

Null은 object 값이 '의도적으로' 없는 것을 의미한다. primitive value 중의 하나지만 typeof null //object typeof 함수에서 object를 리턴한다. 이는 stackoverflow.com/questions/20480729/why-does-typeofnull-return-object-but-you-cant-assign-properties-to-it/20480863#20480863 여기서 그 이유를 알 수 있다. 이와 비슷한 경우로 NaN이 있는데, NaN은 not a number의 줄임말임에도 불구하고 typeof NaN은 number를 리턴한다. 그 이유는 NaN이 Number를 다룰 때 사용되기 때문이다. 따라서 이에 연정선에서, null은 object가 '의도..

primitive type vs. reference type

지금은 확실하게 개념이 잡혀있는 것 같지 않기에 우선 오늘 알게 된 것을 정리하고 넘어가려고 한다. primitive type은 let a = 3; 과 같이 선언과 할당과정을 거칠 때, 1) a에 주소를 할당 (a의 주소는 300) 2)3에 주소를 할당 (b의 주소는 500) 3) a가 값으로 3의 주소를 가짐 (300의 주소를 가지는 변수명 a는 주소 500을 값으로 가짐) 과 같은 방식이 이루어진다. 이때, 만약 a = 4; 로 a에 다른 값을 할당하면, 1) 4에 주소를 할당 (4의 주소는 501) 2) a가 값으로 4의 주소를 가짐 (300의 주소를 가지는 변수명 a는 주소 501을 값으로 가짐) 따라서 숫자 3은 주소 500에 그대로 남아있는 상태가 된다. (주소 500에 할당되어 있는 데이터는..