전체 글 126

arguments object과 array like object

function getAllParamsByRestParameter(...args) { return args; } function getAllParamsByArgumentsObj() { return arguments; // 기록해두기 } const restParams = getAllParamsByRestParameter('first', 'second', 'third'); const argumentsObj = getAllParamsByArgumentsObj('first', 'second', 'third'); 위의 코드에서 restParams는 array를 리턴하고, argumentsObj는 object를 리턴한다. 구글 개발자 모드로 둘을 확인해보았더니 어딘가 다르다는 것을 알 수 있었다. arguments..

Object.assign과 Shallow/Deep copy

Object.assign(target, ...sources) 이 메소드는 source object들의 enumerable한 property를 target object에 shallow copy한다. (확실한 표현을 위해 영어를 사용함) enuerable : for.. in...과 같은 operator로 뽑아낼 수 있는 것. (아직 잘 모르겠지만 object를 만들 때, 숨겨진 속성들이 만들어지는 듯 하다) shallow copy : 얕은 복사라고 하던데, 대상 object의 가장 바깥 층위만 복사하는 것으로 보인다. 따라서 객체 안에 property로 객체가 있다면, 객체 안의 객체는 주소 값이 그대로 따라온다. 따라서 복사된 객체에서 객체 안의 객체를 수정하게 되면 원 객체에도 수정이 된다. 자세한 설명..

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 객체 아래로 들어가고 전역..