일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- greedy
- 항해99솔직후기
- 항해99후기
- 항해99추천
- 알고리즘
- 실전프로젝트
- 로딩 후 실행
- 숫자를 별점으로
- JavaScript
- 프로그래머스
- 동전 0
- 중복카테고리
- 백준
- 배열 메소드
- 서버 컴포넌트
- 날씨 api
- 탐욕알고리즘
- jQuery
- 항해99
- NextJS v13
- react
- 카테고리필터
- 그리디
- 클라이언트 컴포넌트
- 중복선택
- 배열 중복 제거
- 자바스크립트
- db수정
- 부트캠프항해
- server component
- Today
- Total
목록개발/Javascript (49)
공부 및 일상기록
passed by value 인자로 넘기는 값을 복사해서 새로운 함수에 전달하는 방식 값에 의한 호출은 원본값이 변경될 가능성은 없지만, 고비용과 메모리의 문제점이 있다. let a = 1; let b = a; console.log(a, b) // 1 1 console.log(a===b) //true a=10; console.log(a,b) //10 1 변수 a는 원시타입인 숫자 1을 할당했고, 원시타입은 불변성이 유지되어 b에 a를 할당하면 새로운 메모리에 1이 저장된다. passed by reference 주소값을 인자로 전달하는 방식 참조에 의한 호출은 원본값의 변경이 일어날 수도 있다는 문제점이 있다. const obj = { a: "apple" }; const test = obj; test.a ..
자바스크립트는 타입 변환에 유연하게 동작한다. == (equality operator) == 연산자는 두 피연산자의 값의 타입이 다를 경우 자동으로 일부 피연산자의 타입을 변환 후 값을 비교한다. 타입을 비교하지 않으므로 느슨한 비교를 한다고 표현한다. 1 == 1 //true 1 == '1' //true true == 1 //true true == '1'1 //true true == 'true' //false null == undefined //true *true=='true' 는 false이다. 불리언과 문자를 둘 다 변환 해서 1이 되어야만 true이기 때문에 이는 성립되지 않는다. === (strict equality operator) === 연산자는 타입을 변환하지 않으므로 ==연산자에 비해 엄..
화살표 함수는 함수표현식보다 단순하고 간결한 문법으로 함수를 만들 수 있는 방법이다. //함수표현식 let func = (arg1, arg2, ... argN) { return expression; } //화살표함수 let func = (arg1, arg2, ... argN) => expression 기존의 함수 표현식에서 function 키워드를 삭제하고, 인자를 받는 매개변수의 괄호와 코드블록 사이에 화살표만 넣어주면 화살표 함수이다. 그리고 함수 내부의 내용이 반환값(return)만 있다면 코드블록인 중괄호와 return을 생략할 수 있다. 또한 인자가 하나만 있다면 매개변수의 괄호도 생략 가능하고, 만약 인자가 없다면 생략이 불가능 하다. 그리고 return을 생략할 수 있는 조건에서 만약 ret..

자바스크립트는 싱글스레드를 가지고 있다. 스레드의 개념은 위와같다. 스레드가 여러개인 멀티스레드라면 한번에 많은 일을 처리할 수 있지만 자바스크립트는 싱글스레드이기 때문에 일을 순차적으로 실행해야 한다. 싱글스레드 특징 1. context switch 작업을 요구하지 않는다. 문맥교환이란 하나의 프로세스가 CPU를 사용중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(context)를 보관하고 새로운 프로세스의 상태를 적재하는 작업 2. 자원 접근에 대한 동기화를 신경쓰지 않아도 된다. 스레드들이 동시에 동일한 자원에 접근하는 것을 막아주어야 하는데 이에 별도의 노력이 필요하지 않다. 3. 프로그래밍 난이도가 쉽고, 자원을 적게 소모한다. 4. CPU만을 사용한 연산을..
렉시컬 환경이란 자바스크립트 코드에서 변수나 함수등의 식별자를 정의하는데 사용하는 객체이다. 모든 함수, 코드블록 { }, 스크립트는 렉시컬 환경을 갖는다. 렉시컬 환경 객체는 두 파트로 나눠져 있다. 1. 환경레코드 : 모든 로컬변수( + this등의 정보들)를 property로 저장하는 객체 2. 외부 렉시컬 환경을 참조하는 포인터 : 중첩된 자바스크립트 코드에서 스코프를 탐색함

클로저 정의 클로저는 외부함수(포함하고있는)의 변수에 접근할 수 있는 내부함수를 일컫는다. 간단한 예제를 통해서 이게 무슨말인지 쉽게 알아보자. const x = 1; function outer() { const x = 10; const inner = function() { console.log(x); }; return inner; } const ella = outer(); ella(); // 10 코드를 순차적으로 분석해본다. 1. 전역변수 x=1 이 선언된다. 2. 함수 outer는 outer스코프에 x=10과 inner함수를 가지고 있다. 3. inner함수는 inner스코프를 만들고 console.log(x)를 가지고 있다. 4. outer함수는 inner함수를 반환하고 소멸한다. (이때 실행컨텍..
실행 컨텍스트는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체이다. 자바스크립트는 동일한 환경에 있는 환경정보들을 모은 실행컨텍스트를 콜스택에 쌓아 올린 후 실행하여 코드의 환경과 순서를 보장하게 된다. 스택이 후입선출의 구조이기에 순서를 보장할 수 있고, 콜스택 내부에 쌓인 컨텍스트의 정보를 통해 환경을 보장할 수 있다. 실행컨텍스트는 크게 세가지 종류가 있다. 전역 실행컨텍스트 실행컨텍스트의 기초이다. 함수 밖에 있는 코드는 전역 실행 컨텍스트에 있다. 프로그램에는 오직 한개의 실행컨텍스트만 있을 수 있다. 함수 실행컨텍스트 함수가 실행될 때마다 해당 함수에 대한 새로운 실행 컨텍스트가 만들어 진다. 각 함수는 고유의 실핸컨텍스트를 갖지만, 함수가 실행되거나 call 될때만 생성된다. Eval 실..
스코프는 간단히 말하면 변수에 접근할 수 있는 범위 이다. 자바스크립트에서는 크게 두가지 타입의 스코프가 있다. 전역(global)과 지역(local)이다. 전역스코프는 말 그대로 전역에 선언되어 있어 어느곳에서든지 해당 변수에 접근할 수 있다는 의미이다. 지역스코프는 해당 지역에서만 접근할 수 있어 지역을 벗어난 곳에서는 접근할 수 없다. 자바스크립트에서 함수를 선언하면 함수를 선언할 때마다 새로운 스코프를 생성하게 된다. 이는 함수스코프로 함수 스코프가 바로 지역스코프의 예라고 할 수 있다. 스코프 체인이란? 변수나 함수에 접근할 때 실행컨텍스트에 의해 스코프를 통해 접근하게 된다. 스코프는 스택에 후입선출 구조로 쌓이게 되는데 가장 위에 존재하는 스코프가 먼저 실행되게 된다. 따라서 해당 스코프에서..