JS

개발자의 공부/JS

[JS문법] 배열1

✅ 배열이란? 여러 개의 값을 순차적으로 나열한 자료구조다. 자바스크립트에 배열이라는 타입은 존재하지 않는다. 배열은 객체 타입이다. 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이라고 한다. 🟢 배열 생성 방법 배열 리터럴 ..

개발자의 공부/JS

[JS문법] 일급 객체

일급 객체란? 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성 가능하다. 변수나 자료구조(배열, 객체)에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 함수의 반환 값으로 사용할 수 있다. JavaScript의 함수는 위 조건을 모두 만족하므로 일급 객체이다. 예시를 보고 이해해 보자. // 1. 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다. const increase = function (num) { return ++num; }; const decrease = function (num) { return --num; }; // 2. 함수는 객체에 저장할 수 있다. const auxs = { increase, decrease }; // 3. 함수의 매개변수..

개발자의 공부/TS

[TS]Type Annotation, Type Inference

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 ..

개발자의 공부/JS

[JS]얕은 복사와 깊은 복사

얕은 복사(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..

개발자의 공부/JS

[JS]데이터 불변성(Immutability)

변수에 값을 할당한다는 것은 값의 메모리 주소를 가리키는 것(참조) 임을 유의해야 한다. Immutable type VS Mutable Type 불변성(Immutability)란 말 그대로 변하지 않는 것을 의미한다. 불변 데이터는 한번 생성되고 나면 그 뒤에는 변할 수 없다. 자바스크립트에는 원시 타입(primitive type)이 불변성을 띤다. 원시 타입(primitive type)의 종류 Boolean String Number Null undefined Symbol 원시 타입은 메모리영역 안에서 변경이 불가능하며 변수에 할당할 때 완전히 새로운 값이 만들어져 재할당된다. 원시 타입 이외의 모든 값은 객체(Object) 타입이며 객체 타입은 변경 가능한 값(mutable value)이다. 즉, 객체..

개발자의 공부/JS

JS 코드 개선+Optional chaining+null 병합 연산자

#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..

개발자의 공부/JS

[JS]LocalStorage와 SessionStorage(내용 업데이트)

Window.localStoragelocalStorage 읽기 전용 속성을 사용하면 Document 출처의 Storage 객체에 접근할 수 있다. 저장한 데이터는 브라우저 세션 간에 공유된다. localStorage는 sessionStorage와 비슷하지만, localStorage의 데이터는 만료되지 않고 sessionStorage의 데이터는 페이지 세션이 끝날 때, 즉 페이지를 닫을 때 사라지는 점이 다르다. 예제localStorage.setItem('myCat', 'Tom');key: value 형식으로 첫 번째 인수는 key, 두 번째 인수는 Value이다. 데이터를 저장할 때 문자 데이터 형식으로 저장하는 게 좋다. 객체나 배열 데이터 같은 경우 JSON 객체 stringify를 통하여 문자 데이..

개발자의 공부/JS

코드 프로그래머스 문제 풀이4

문제: 콜라츠 추측 문제 설명 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을 반환해 주세..