본문 바로가기

자바스크립트/기초

(50)
나머지 매개변수, 전개 구문(Rest parameters, Spread syntax) 이 글은 코딩앙마 자바스크립트 중급 강좌 #10 나머지 매개변수, 전개 구문(Rest parameters, Spread syntax) 를 정리한 글입니다. 인수 전달 function showName(name) { console.log(name); } showName('Mike'); // 'Mike' showName('Mike', 'Tom'); // 'Mike' name을 전달하면 name을 콘솔에 찍어주는 함수가 있다면, 이름을 하나 더 전달하면 에러는 발생하지 않고 mike만 찍힙니다. 자바스크립트에서 함수의넘겨주는 인수의 갯수는 제약이 없습니다. 인수의 갯수를 정해놓고 함수를 만들어도, 실제 호출할 때 정확히 그 갯수를 맞출 필요는 없습니다. 심지어 showName() 이렇게 아무것도 전달하지 않아..
구조 분해 할당 (Destructuring assignment) 이 글은 코딩앙마 자바스크립트 중급 강좌 #9 구조 분해 할당 (Destructuring assignment) 강의를 듣고 정리한 글입니다. 구조 분해 할당이란? 구조 분해 할당 구문은 배열이나 객체의 속성을 분해해서 그 값을 변수에 담을 수 있게 하는 표현식입니다. 배열 구조 분해 let [x, y] = [1, 2]; console.log(x); // 1 console.log(y); // 2 x에 1이 들어가고, y에 2가 들어갑니다. let users = ['Mike', 'Tom', 'Jane']; let [user1, user2, user3] = users; // let user1 = users[0]; // let user2 = users[1]; // let user3 = users[2]; cons..
1급 객체와 고차함수 개념 다시 정리하기 1급 시민(first-class citizen)의 세 가지 특징 1. 변수에 할당할 수 있다 2. 다른 함수의 인자로 전달될 수 있다. 3. 다른 함수의 결과로서 리턴될 수 있다. 대부분의 프로그래밍 언어에서 숫자는 1급 시민의 조건을 충족합니다. 숫자는 변수에 저장할 수 있고, 인자나 반환값으로 전달할 수 있습니다. 1급 객체(first class object)란? 1급 객체는 특정 언어에서 객체(object)를 1급 시민으로써 취급한다는 뜻입니다. 1급 시민의 조건을 모두 충족합니다. 1급 함수(first class function)란? 1급 객체 뿐만 아니라, 1급 함수도 존재합니다. 함수를 1급 시민으로 취급하는 것입니다. 몇몇의 학자들은 1급 시민의 조건과 함께 1급 함수에게 다음과 같은 추가적..
TDZ (Temporal Dead Zone) TDZ 영역에 있는 변수들은 사용할 수 없습니다. let과 const는 TDZ의 영향을 받습니다. 할당을 하기 전에는 사용할 수 없습니다. 이는 코드를 예측가능하게 하고, 잠재적인 버그를 줄일 수 있습니다. 변수의 생성과정 var 1. 선언 및 초기화 단계 2. 할당 단계 let 1. 선언 단계 2. 초기화 단계 3. 할당 단계 const 1. 선언 + 초기화 + 할당 var : 함수 스코프(function-scoped) let, const : 블록 스코프(block-scoped) 함수, if 문, for 문, while 문, try/catch 문 등
객체 메소드(Object methods) 코딩 앙마 자바스크립트 중급 강좌 #3 - 객체 메소드, 계산된 프로퍼티 유튜브를 보고 정리한 글입니다. Object.assign() : 객체 복제 const user = { name : 'Mike', age : 30 } const newUser = Object.assign({}, user); const cloneUser = user; 하면 안됩니다. user 변수에는 객체 자체가 들어있는게 아니라, 객체가 저장되어있는 메모리 주소인 객체에 대한 참조값이 저장됩니다. 그러므로 cloneUser를 만들어서 user를 넣으면 객체가 복사되면서 들어가는게 아니라, 그 참조값만 복사되는 것입니다. cloneUser를 만들어서 참조값을 복사하게 되면, cloneUser.name = 'Tom'; 으로 cloneUs..
slice, substring, substr 차이 메서드 추출할 부분 문자열 음수 허용 여부(인수) slice(start, end) start 부터 end까지(end는 미포함) 음수 허용 substring(start, end) start 와 end 사이 음수는 0으로 취급함 substr(start, length) start부터 length개의 글자 음수 허용 ℹ️ 어떤 메서드를 선택해야 하나요? 모두 사용해도 괜찮습니다. 그런데 substr에는 단점이 하나 있습니다. substr는 코어 자바스크립트 명세서(ECMA-262 – 옮긴이)가 아닌, 구식 스크립트에 대응하기 위해 남겨 둔 브라우저 전용 기능들을 명시해 놓은 부록 B(Annex B)에 정의되어있습니다. 거의 모든 곳에서 이 메서드가 동작하긴 하지만 브라우저 이외의 호스트 환경에서는 제대로 동작하..
isFinite isFinite(value) - 인수를 숫자로 변환하고 변환한 숫자가 NaN/Infinity/-Infinity가 아닌 일반 숫자인 경우 true를 반환함 alert( isFinite("15") ); // true alert( isFinite("str") ); // false, NaN이기 때문입니다. alert( isFinite(Infinity) ); // false, Infinity이기 때문입니다. isFinite는 문자열이 일반 숫자인지 검증하는데 사용되곤 합니다. let num = +prompt("숫자를 입력하세요.", ''); // 숫자가 아닌 값을 입력하거나 Infinity, -Infinity를 입력하면 false가 출력됩니다. alert( isFinite(num) ); 빈 문자열이나 공백만 있는..
함수 이름 짓기 함수 이름짓기 함수는 어떤 동작을 수행하기 위한 코드를 모아놓은 것입니다. 따라서 함수의 이름은 대개 동사입니다. 함수 이름은 가능한 한 간결하고 명확해야 합니다. 함수가 어떤 동작을 하는지 설명할 수 있어야 하죠. 코드를 읽는 사람은 함수 이름만 보고도 함수가 어떤 기능을 하는지 힌트를 얻을 수 있어야 합니다. 함수가 어떤 동작을 하는지 축약해서 설명해주는 동사를 접두어로 붙여 함수 이름을 만드는 게 관습입니다. 다만, 팀 내에서 그 뜻이 반드시 합의된 접두어만 사용해야 합니다. "show"로 시작하는 함수는 대개 무언가를 보여주는 함수입니다. 이 외에 아래와 같은 접두어를 사용할 수 있습니다. "get…" – 값을 반환함 "calc…" – 무언가를 계산함 "create…" – 무언가를 생성함 "che..

반응형