본문 바로가기

javaScript

(20)
구조분해 할당 사용하기 프로젝트를 하며 심심치 않게 사용했던 부분이 구조분해 할당이다. MDN을 찾아보니 구조분해 할당에 대한 예제가 어마어마 하다... 구조분해 할당에 대해 알아보자 구조분해 할당 구조 분해 할당은 spread 문법을 이용하여 값을 해체한 후, 개별 값을 변수에 새로 할당하는 과정을 말합니다. 분해 후 새 변수에 할당 배열 const [a, b, ...rest] = [10, 20, 30, 40, 50]; // 질문: a, b, rest는 각각 어떤 값인가요? // a = [10] // b = [20] // rest = [30, 40, 50] 기본 변수 할당 let foo = ["one", "two", "three"]; let [red, yellow, green] = foo; console.log(red); /..
spread 문법 사용하기 배열의 요소를 하나씩 가져와서 사용하지 않고 spread 문법을 사용해 한번에 적용시켜보자 spread 문법 function sum(x, y, z) { return x + y + z; } const numbers = [1, 2, 3]; sum(...numbers) // 6 spread 문법은 기존 원본을 변경하지 않는다. sum함수의 인자에 numbers 배열의 요소들을 모두 넣고 싶을 때? ' ... ' + 배열 변수명을 써주면 된다. 배열 합치기 let arr1 = [0, 1, 2]; let arr2 = [3, 4, 5]; arr1 = [...arr1, ...arr2]; // arr1 = [0, 1, 2, 3, 4, 5]; 배열 복사 let arr = [1, 2, 3]; let arr2 = [...a..
클로저 모듈 패턴에 대해 이전에는 스코프와 클로저에 대해 알아 봤다. 복기해보자면, 스코프는 변수의 접근 범위를 말하고, 스코프 체인은 스코프 내부에서 스코프 체인을 따라 가장 바깥쪽 외부까지 접근하는걸 말한다. 클로저는 함수를 리턴하는 함수인데, 내부 함수는 외부 함수에 선언된 변수에 접근 가능하다. 자세한 내용은 이전 글에서 확인 가능하다 https://do-youit.tistory.com/23 클로저 모듈 패턴이란? 클로저를 이용해 내부 함수를 단 하나만 리턴하는 것에 그치지 않고, 객체에 담아 여러개의 내부 함수를 리턴하도록 만든다. const makeCounter = () => { let value = 0; return { increase: () => { value = value + 1 }, decrease: () =>..
스코프와 클로저 면접에서 종종 질문 당한다는?! 스코프와 클로저 대해 알아보자 스코프와 클로저는 서로 밀접히 연관된 개념인듯 하다. 한번 살펴보자. 스코프? 변수 접근 규칙에 따른 유효 범위 변수에는 접근할 수 있는 접근 범위가 존재한다. 중괄호({ }) 안쪽에 변수가 선언 되었는가? 바깥쪽에 선언 되었는가?에 따라 스코프의 범위가 정해진다. 기본적으로 안쪽에서 선언된 스코프는 바깥쪽 스코프에 접근할 수 없다.(inside -> outside X) 스코프는 밖에서 안으로 접근이 가능하다.(outside -> inside O) 스코프는 중첩이 가능하다. 가장 바깥쪽 스코프를 전역 스코프(Global scope)라고 한다. 전역 스코프를 제외한 모든 안쪽 스코프는 지역 스코프(local scope)라고 한다. 전역 스코프에..
객체 key 추가/삭제/확인 객체안에 key의 value를 추가하거나 삭제하거나 혹은 key가 있는지 확인해보자 Dot/bracket notation을 이용해서 값을 추가할 수 있다. let 객체 = { writer: 'willy', content: 'Free' } 객체['story'] = '안녕하세요'; // {writer: 'willy', content: 'Free', story: '안녕하세요'} 객체.boolean = true; // {writer: 'willy', content: 'Free', story: '안녕하세요', boolean: true} delete를 이용해 삭제할 수 있다. let 객체 = { writer: 'willy', content: 'Free' } delete 객체.content; // {writer: '..
헷갈리는 배열 메서드[arr.slice(), arr.splice()] 배열을 쓸 때 심심치 않게 사용하게 되고 사용할 때마다 헷갈리는 arr.slice()와 arr.splice()에 대해 알아보자 arr.slice() arr.slice()는 참조형 배열 순서에 대한 정보(index)를 가지고 있는 (참조형)데이터 타입 배열의 원본은 변경되지 않는다(immutable) arr.slice(시작할 요소, 끝낼 요소) // 시작할 요소부터 끝낼 요소까지 복사 arr.slice(시작할 요소) // 시작할 요소부터 마지막 인덱스까지 복사 arr.slice() // 배열의 첫 요소부터 끝 요소까지 복사 const 동물들 = ['기린', '하마', '호랑이', '펭귄', '낙타'] console.log(동물들.slice(1, 3)) // ['하마', '호랑이'] console.log(동..
배열 메서드[indexOf(), includes()] arr.indexOf() 배열의 요소(index)가 있는지? 있다면 몇번째에 존재하는지 알려주는 메서드. let words = [’Radagast’, ‘the’, ‘Brown’]; words.indexOf('the') // 1 words.indexOf('Radagast') // 0 words.indexOf('없는단어') // -1 해당 배열에 index가 있다면? 0 { let isPresent = arr.indexOf(ele) !== -1; return isPresent; } // isPresent === arr에 ele요소가 -1과 같지 않다면(존재 한다면) hasPresent(words, "없는..
원시자료형, 참조자료형(JS) 원시자료형(Primitive Data Type) 원시자료형은 객체가 아니면서 method를 가지지 않는 6가지 타입을 말한다. string, number, bigint, symbol, undefined, (null), boolean 원시자료형의 변수에는 하나의 데이터만 담는다. 원시자료형의 데이터 보관함의 크기는 고정되어 있다. 원시자료형은 값 자체에 대한 변경이 불가능(immutable)하지만, 변수에 다른 데이터를 할당할 수 있다. 원시자료형을 특정 변수에 할당할 경우, 원본의 값을 복사하여 앞선 특정 변수에 저장한다. 이때에 원본에는 영향을 주지 않는다. 참조자료형(Reference Data Type) JS에서 원시자료형이 아닌 모든 것은 참조자료형이다. 배열[], 객체{}, 함수function 참..