본문 바로가기

js

(8)
JS - 문자열에서 숫자 추출하기 숫자를 문자열로 추출하기 '1J2A3V4A5S6C7R8I9P0T' 같은 문자 사이에서 숫자들을 하나의 숫자로 추출하는 방법입니다. 이럴 때는 정규식을 사용하여 추출하는 방법을 사용합니다. /[^0-9]/g 는 숫자가 아닌 문자들을 의미하며, /[^0-9]/g는 대괄호 안의 패턴을 문자열에서 모두 매칭하라는 뜻입니다. string.replace(regex, "")를 이용하여 regex에 해당하는 숫자가 아닌 모든 패턴을 ""으로 변환해줍니다. const string = "1J2A3V4A5S6C7R8I9P0T"; const regex = /[^0-9]/g; const result = string.replace(regex, ""); console.log(result); // 1234567890
JS - 배열 순서 바꾸기 1. 배열의 마지막 요소를 맨 앞으로 이동하기 let fruits = ["grape", "orange", "peer", "apple"]; let last = fruits[fruits.length-1]; fruits.splice(fruits.length-1, 1); fruits.unshift(last) console.log( fruits ); // ['apple', 'grape', 'orange', 'peer'] 2. 요소 맞교환하기 let fruits = ["grape", "orange", "peer", "apple"]; let tmp = fruits[3]; fruits[3] = fruits[0]; fruits[0] = tmp; console.log(fruits) // ['apple', 'orange',..
JS - Array.prototype.map() 구현하기 map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다. - mdn const array1 = [1, 4, 9, 16]; // pass a function to map const map1 = array1.map(x => x * 2); console.log(map1); // expected output: Array [2, 8, 18, 32] 다음과 같이 배열의 요소 하나하나에 원하는 함수를 넣어서 그 결과로 새로운 배열을 만드는 map 함수를 직접 구현해보겠습니다. const arr = [1,2,3,4,5]; 먼저 임의의 배열을 먼저 추가해줍니다. Array.prototype.map2 = function(callback) { return null;..
JS - Array.prototype.filter() 구현하기 filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다. - mdn const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present']; const result = words.filter(word => word.length > 6); console.log(result); // expected output: Array ["exuberant", "destruction", "present"] 다음과 같이 배열에서 원하는 조건의 배열을 리턴하는 filter 함수를 직접 구현해보겠습니다. const arr = ['spray', 'limit', 'elite', 'exuberant', 'destr..
클로저 (Closure) 클로저(Closure) 클로저에 대해 MDN은 아래와 같이 정의하고 있습니다. “A closure is the combination of a function and the lexical environment within which that function was declared.” 클로저는 함수와 그 함수가 선언됐을 때의 렉시컬 환경(Lexical environment)과의 조합이다. 클로저란? 중첩함수가 외부함수보다 더 오래 유지되며, 상위 스코프의 식별자를 참조하는것이라고 할 수 있습니다. 외부함수보다 중첩함수가 더 오래 유지되는 경우, 중첩함수는 생명주기가 종료된 외부함수의 변수를 참조할 수 있으며 이러한 중첩함수를 클로저라 부릅니다. 클로저는 중첩함수가 상위 스코프의 식별자를 참조하고 있고, 중첩..
this This ? this는 객체 자신의 프로퍼티나 메서드를 참조하기 위한 자기참조변수 이다. this가 가르키는 값은 함수호출방식에 따라 동적으로 결정된다. 문단 일반 함수로서 호출 = 전역객체 function foo() { console.log(this); } foo(); // window // 전역객체는 브라우저 환경에서는 window, node.js환경에서는 global을 가르킨다. 메서드로서의 호출 = 메서드를 호출한 객체(마침표 앞의 객체) const obj = {foo}; //obj 생성자 함수로서 호출 = 생성자 함수가 (미래에)생성할 인스턴스 const inst = new foo(); // inst
스코프 스코프란? 모든 식별자(변수이름, 함수이름, 클래스이름)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효범위가 결정된다. 이를 스코프라 한다. 즉, 스코프는 식별자가 유효한 범위를 말한다. 함수레벨 스코프 vs 블록레벨 스코프 함수레벨 스코프 코드블록이 아닌 함수에 의해서만 지역스코프가 생성된다. var키워드로 선언된 변수는 오로지 코드블록(함수 몸체)만을 지역스코프로 인정한다. 블록레벨 스코프 C나 JAVA등 대부분의 프로그래밍언어는 함수몸체만이 아니라 모든 코드블록(if,for,while, try/catch)등에서 지역스코프를 만든다. let, const는 블록레벨스코프를 지원한다.
this란? 자바스크립트의 함수는 호출될 때, 매개변수로 전달되는 인자값 이외에, arguments 객체와 this를 암묵적으로 전달 받는다. function square(number) { console.log(arguments); console.log(this); return number * number; } square(2); 자바스크립트의 this keyword는 Java와 같은 익숙한 언어의 개념과 달라 개발자에게 혼란을 준다. Java에서의 this는 인스턴스 자신(self)을 가리키는 참조변수이다. this가 객체 자신에 대한 참조 값을 가지고 있다는 뜻이다. 주로 매개변수와 객체 자신이 가지고 있는 멤버변수명이 같을 경우 이를 구분하기 위해서 사용된다. 아래 Java 코드의 생성자 함수 내의 this.n..