클로저
·
javascript
함수와 렉시컬환경의 조합함수가 생성 될 당시의 외부변수를 기억, 생성 이후에도 계속 접근 가능외부변수의 은닉화 (외부함수의 변수를 변경할 수 없다.) 함수 내부 렉시컬환경에서 변수가 없는경우 하나씩 외부로 나가서 변수를 찾게된다. 내부함수 -> 외부함수 -> ... -> 전역환경  let one;one = 1;function addOne(num) { console.log(num + one); //인수 5 + 전역변수 one값을 가져온다}addOne(5); 함수가 생성 될 당시의 변수를 기억해서 이후에 계속 사용할 수 있다. function makeAdder(x) { return function (y) { return x + y; };}const add3 = makeAdder(3);console..
string 대문자, 소문자 체크하기
·
javascript
1. toUpperCase(), toLowerCase() 함수 활용하기 // 대문자인지 확인하는 함수 function isUpper(letter) { return letter === letter.toUpperCase(); } // 소문자인지 확인하는 함수 function isLower(letter) { return letter === letter.toLowerCase(); } 2. 정규식 사용하기 // 대문자인지 확인하는 정규표현식 function isUpper(letter) { return letter.match(new RegExp(/^[A-Z]/)) !== null; } // 소문자인지 확인하는 정규표현식 function isLower(letter) { return letter.match(new Re..
String.charAt(index)
·
javascript
charAt() 함수는 문자열에서 특정 인덱스에 위치하는 유니코드 단일문자를 반환한다. 사실 이 함수를 사용하지 않고 String[index]로도 사용할 수있다. const sentence = 'The quick brown fox jumps over the lazy dog.'; const index = 4; console.log(`The character at index ${index} is ${sentence.charAt(index)}`); // Expected output: "The character at index 4 is q"
배열의 두 요소 순서를 변경할 때
·
javascript
1. 임시 변수를 사용해서 변경한다. // arr[0], arr[1] 변경해야하는 경우 const arr = [1, 2, 3, 4, 5]; let temp = arr[1]; arr[1] = arr[0]; arr[0] = temp; // [2, 1, 3, 4, 5] 2. 구조분해 할당을 이용한다. const arr = [1, 2, 3, 4, 5]; [arr[0], arr[1]] = [arr[1], arr[0]]; // [2, 1, 3, 4, 5] 구조분해 할당을 이용하면 간단하게 순서를 변경할 수 있다. 참고 https://miiingo.tistory.com/364
Array.prototype.reduce()
·
javascript
reduce라고 하면 떠올리는 것 ! 누산기 누산이란 ? 소계(小計)를 계속하여 덧붙여 합산함. 또는 그런 합계를 말한다. 배열의 모든 원소에 대해 특정한 연산을 순차적으로 적용할 때 사용한다. 배열의 원소 합을 구하거나, 배열의 길이, 원소의 최대값을 구할 수있다. reduce(callbackFn) //initialValue를 생략할수도 있다. reduce(callbackFn, initialValue) 배열의 원소들의 전체 합 구하기 reduce callback 함수안에 accumulator가 계산된 이전값, currentValue는 현재 인덱스에 해당하는 배열원소의 값이 된다. const array1 = [1, 2, 3, 4]; // 0 + 1 + 2 + 3 + 4 const initialValue ..
call, bind, apply의 this binding
·
javascript
this 아무것도 없는 상태에서 this는 글로벌객체인 window를 가르킨다. 자바스크립트 this가 결정되는 시점은 선언시점이 아닌 누가 실행하는지에 따라서 결정된다. consoleA를 실행할때 testObj가 실행하고 있으므로 this는 testObj를 가르킨다. const testObj = { a: '1234', consoleA: function() { console.log(this.a); } } testObj.consoleA(); //1234 변수에 메소드를 할당해서 실행하는경우 실행할 때 this는 testObj가 아닌 window를 가르킨다. const testObj = { a: '1234', consoleA: function() { console.log(this.a); } } const t..
자바스크립트 sort()로직
·
javascript
Array.prototype.sort() 배열을 정렬하는 메소드. 기본 정렬 순서는 문자열 유니코드를 기준으로 한다. const months = ['March', 'Jan', 'Feb', 'Dec']; months.sort(); console.log(months); // Expected output: Array ["Dec", "Feb", "Jan", "March"] const array1 = [1, 30, 4, 21, 100000]; array1.sort(); console.log(array1); // Expected output: Array [1, 100000, 21, 30, 4] 반환값은 새로운배열이 만들어지는게 아니라 원배열이 수정된다. 정렬기준을 매개변수로 받아서 구현할 수 있다. arr.sort..
fetch() error 처리하기
·
javascript
fetch() promise는 HTTP error에 의해 reject 되지 않는다. https://developer.mozilla.org/en-US/docs/Web/API/fetchfetch(api url) .then(( response ) => { if(!response.ok) { throw new Error(`error status: ${response.status}`) } return response.json() }) .then(( data ) => { // 처리 코드 console.log(data) }) .catch((error) => { // 에러 처리 코드 console.l..
parseInt(), Number() 의 차이
·
javascript
Number(); 문자열을 숫자로 반환한다. 변환하려는 값에 숫자가 아닌 문자열이 들어있으면 NaN 리턴한다. Number('1234'); // 1234 Number('112다'); // NaN Number('다112'); // NaN Number('11.22'); //11.22 Number('11.2') === 11.2 // true parseInt(); 문자열을 정수로 반환한다. 두번째 인자로 진수값을 지정할 수 있다. parseInt('1234'); // 1234 parseInt('123다'); // 123 parseInt('다123'); // NaN parseInt('1다23'); // 1 parseInt('11.22'); // 11 parseInt('11.22다'); // 11 parseInt(..
Array.findIndex()
·
javascript
조건을 충족하는 첫번째 인덱스를 리턴한다. const array1 = [5, 12, 8, 11, 140, 44]; const isLargeNumber = (element) => element > 13; console.log(array1.findIndex(isLargeNumber)); // Expected output: 4 조건을 충족하는 요소가 없는 경우는 -1 리턴 const array1 = [5, 12, 8, 11, 5, 2]; const isLargeNumber = (element) => element > 13; console.log(array1.findIndex(isLargeNumber)); // Expected output: -1