✅ 배열이란? 여러 개의 값을 순차적으로 나열한 자료구조다. 자바스크립트에 배열이라는 타입은 존재하지 않는다. 배열은 객체 타입이다. const numbers = [1, 2, 3, 4] const fruits = ['apple', 'Banana', 'Cherry'] console.log(numbers[1]) console.log(fruits) zero based에 해당하는 0번째, 1번째 와 같은 것들을 index라고 부른다. 배열 데이터 내부의 데이터의 위치를 가리키는 숫자이다. 위와 같이 numbers[1] 대괄호를 열어서 index를 넣어서 조회하는 것을 indexing이라고 한다. 배열 안의 값을 element 즉 요소라고 하기도 하고 배열의 item이라고 한다. 🟢 배열 생성 방법 배열 리터럴 ..
일급 객체란? 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성 가능하다. 변수나 자료구조(배열, 객체)에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 함수의 반환 값으로 사용할 수 있다. JavaScript의 함수는 위 조건을 모두 만족하므로 일급 객체이다. 예시를 보고 이해해 보자. // 1. 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다. const increase = function (num) { return ++num; }; const decrease = function (num) { return --num; }; // 2. 함수는 객체에 저장할 수 있다. const auxs = { increase, decrease }; // 3. 함수의 매개변수..
Type Annotation 변수에 기본 타입을 할당하기 위해 변수 이름뒤에 :Type 을 추가한다. 이렇게 특정한 변수 혹은 특정한 개체 등에 어떤 타입이라고 지정해주는 일을 'Type Annotation' 이라고 한다. let myVar: type = value const, let, var로 변수의 이름을 선언하고 콜론(:)과 타입을 쓴다. 타입은 소문자로 작성한다. 대부분의 경우 필요하지 않다. 실제로 변수를 작성할 때는 타입 추론(Inference)을 사용하면 된다. let movieTitle: string = "Maze Runner"; movieTitle = "Arrival"; movieTitle = 9; // Error; Type 'number' is not assignable to type ..
얕은 복사(Shallow copy) 객체를 복사할 때 원래 값과 복사된 값이 같은 참조를 가리키고 있는 것을 말한다. const user = { // key: value name: 'jeong', age: 85, email: ['gyflsakfn@naver.com'] } const copyUser = user console.log(copyUser === user) user.age = 22 console.log('user', user) console.log('copyUer', copyUser) console.log('------') console.log('------') copyUser와 user는 true가 나왔기 때문에 같은 메모리 주소를 바라보고 있다. user의 객체 데이터만 수정 했을 뿐인데 co..
변수에 값을 할당한다는 것은 값의 메모리 주소를 가리키는 것(참조) 임을 유의해야 한다. Immutable type VS Mutable Type 불변성(Immutability)란 말 그대로 변하지 않는 것을 의미한다. 불변 데이터는 한번 생성되고 나면 그 뒤에는 변할 수 없다. 자바스크립트에는 원시 타입(primitive type)이 불변성을 띤다. 원시 타입(primitive type)의 종류 Boolean String Number Null undefined Symbol 원시 타입은 메모리영역 안에서 변경이 불가능하며 변수에 할당할 때 완전히 새로운 값이 만들어져 재할당된다. 원시 타입 이외의 모든 값은 객체(Object) 타입이며 객체 타입은 변경 가능한 값(mutable value)이다. 즉, 객체..
#swichEl; #fontSelectEl; constructor() { this.#assignElement(); this.#addEvent(); } #assignElement() { this.#swichEl = document.getElementById("switch"); this.#fontSelectEl = document.getElementById("font"); }위 코드는 document단에서 계속 element를 찾았다. switch나 font는 container의 형제 요소들 이기 때문에 container를 document단에서 찾고 그 찾은 내용을 querySelector로 선택할 수 있다. 리펙토링 하면 아래와 같다. #swichEl; #fontSelec..
Window.localStoragelocalStorage 읽기 전용 속성을 사용하면 Document 출처의 Storage 객체에 접근할 수 있다. 저장한 데이터는 브라우저 세션 간에 공유된다. localStorage는 sessionStorage와 비슷하지만, localStorage의 데이터는 만료되지 않고 sessionStorage의 데이터는 페이지 세션이 끝날 때, 즉 페이지를 닫을 때 사라지는 점이 다르다. 예제localStorage.setItem('myCat', 'Tom');key: value 형식으로 첫 번째 인수는 key, 두 번째 인수는 Value이다. 데이터를 저장할 때 문자 데이터 형식으로 저장하는 게 좋다. 객체나 배열 데이터 같은 경우 JSON 객체 stringify를 통하여 문자 데이..
문제: 콜라츠 추측 문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세..