분류 전체보기 157

HTTP 1 장

전 세계의 웹 브라우저 서버, 웹 애플리케이션은 모두 HTTP 를 통해 서로 대화한다고 한다. HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용하기 때문에, 데이터가 지구 반대편에서 오더라도 전송 중 손상되거나 꼬이지 않음을 보장한다. 그렇게 때문에 사용자나 개발자가? 통신중 인터넷의 결함이나 파괴되거나 중복, 왜곡되는 것을 걱정하지 않아도 된다? 웹 서버 === HTTP 서버 웹 서버는 HTTP프로토콜로 의사소통하기 때문에 HTTP 서버라고 불린다. 웹 브라우저는 브라우저 주소를 서버로 보내고 서버는 요청 받은 객체를 찾고 정보를 HTTP 응답에 실어서 클라이언트에게 보냄 콘텐츠 소스 === 리소스 웹 서버는 웹 리소스를 관라하고 제공한다. 웹 리소는 정적파일과 동적파일이 있다. 요청에 따라 웹서버가..

카테고리 없음 2023.07.09

과일장수 문제 js

오랜만에 풀어본 문제 자바스크립트에서 제공하는 메서드를 사용하지 않는 방법으로 풀어보았다. customSort함수는 내림차순으로 정렬해 주는 함수, createNestedArray 함수는 제시하는 배열과 숫자로 배열의 길이만큼 돌면서 제시한 숫자만큼 잘라 2중 배열을 만들어준다. 만약 문제에서 제시하는 상황에 맞게 상자 안에 들어가는 사과 개수에 미치지 못한다면 (if array.length - count < 0)으로 break를 해주었다. 그렇게 짜인 배열을 다 돌면서 배열 안에 있는 2중 배열요소에서 customMin이라는 함수를 통해 가장 작은 수를 찾아 그 수와 한 상자에 들어가는 사과갓수를 곱해 계속해서 answer에 더해주었다. 이렇게 풀었더니 시간적인 문제인지 테스트 11,12,13,14,1..

문제 2023.07.04

RegExp정규 표현식

정규 표현식이란 일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어이다. 정규 표현식은 문자열을 대상으로 패턴 매칭 기능을 제공한다. 패턴 매칭 기능이란 특정 패턴과 일치하는 문자열을 검색하거나 추출또는 치환할 수 있는 기능을 말한다. 정규표현식을 사용하면 반복문과 조건문 없이 패턴을 정의하고 테스트하는 것으로 간단하게 체크할 수 있다. 다만 정규 표현식은 주석이나 공백을 허용하지 않고 여러 가지 기호를 혼합하여 사용하기 때문에 가독성이 좋지 않다. 정규 표현식 객체(RegExp 객체)를 생성하기 위해서는 정규 표현식과 리터럴 RegExp 생성자 함수를 사용할 수 있다. 정규표현식객체에도 메서드를 사용할 수 있다. RegExp.prototype.exec 인수로 전달받은 문자열에 대해 정..

javascript 2023.06.07

Number

Number 객체는 생성자 함수 객체다. new연산자와 함께 호출하여 Number 인스턴스를 생성할 수 있다. number 생성자 함수에 인수를 전달하지 않고 new연산자와 함꼐 호출하면 [[NumberData]] 내부 슬롯에 0을 할당한 Number 래퍼 객체를 생성한다. Number 생성자 함수의 인수로 숫자가 아닌 값을 전달하면 인수를 숫자로 강제 변환한 후 [[NumberData]] 내부 슬롯에 할당한 Number객체를 생성한다. 인수로 숫자로 변환할 수 없다면 NaN을 [[NumberData]] 내부 슬롯에 할당한 Number 래퍼 객체를 생성한다. new 연산자를 사용하지 않고 Number 생성자 함수를 호출하면 Number 인스턴스가 아닌 숫자를 반환한다. Number.isFinite 정적메..

javascript 2023.06.07

배열 고차 함수

고차 함수는 인수로 전달받거나 함수를 반환하는 함수를 말함. 자바스크립트의 함수는 일급 객체이므로 함수를 값처럼 인수로 전달할 수 있으면 반환할 수도 있다. 외부 상태의 변경이나 가변 데이터를 피하고 불변성을 지향하는 함수형 프로그래밍에 기반을 두고 있다. 함수형 프로그래밍은 순수 함수와 보조 함수의 조합으로 통해 로직 내에 존재하는 조건문과 반복문을 제거하여 복잡성을 해결하고 변수의 사용을 억제하여 상태 변경을 피하려는 프로그래밍 패러다임이다. 순수 함수를 통해 부수효과를 최대한 억제하여 오류를 피하고 프로그램의 안정성을 높이려는 노력의 일환이다. Array.prototype.sort 배열의 요소를 정렬한다. 원본 배열을 직접 변경하여 정렬된 배열을 반환한다. 숫자 요소를 정렬할때는 정렬 순서를 정의하..

javascript 2023.06.06

배열 메소드

배열 메서드는 결과물을 반환하는 패턴이 두 가지이므로 주의가 필요하다고 한다? 배열에는 원본 배열(배열 메서드를 호출한 배열, 즉 배열 메서드의 구현체 내부에서 this가 가리키는 객체)을 직접 변경하는 메서드와 원본 배열을 직접 변경하지 않고 새로운 배열을 생성하며 반환하는 메서드가 있다. Array.isArray Array 생성자 함수의 정적 메서드다. 전달된 인수가 배열이면 true, 아니면 false를 반환 Array.indexof 원본 배얄에서 인수로 전달된 요소를 검색하여 인덱스를 반환한다. 중복되는 요소가 여러개 있다면 첫 번째로 검색된 요소의 인덱스를 반환한다. 검색하는 요소가 존재하지 않다면 -1 를 반환한다. Array.prototype.includes ES7에 도입된 includes ..

javascript 2023.06.06

배열

배열이 가지고 있는 값을 '요소'라고 부름 배열의 요소는 자산의 위치를 나타내는 인덱스(index)를 갖는다. 자바스크립트에서 배열이라는 타입은 존재하지 않는다. 배열은 '객체' 타입이다. 자바스크립트의 배열은 일반적인 의미에 배열이 아니다. 자바스크립트의 배열은 일반적인 배열의 동작을 흉내 낸 특수한 객체다. 자바스크립트 배열은 인덱스로 배열 요소에 접근하는 경우에는 일반적인 배열보다 느리지만 요소를 삽입 또는 삭제하는 경우에는 일반적인 배열보다 빠르다. 자바스크립트 배열은 인덱스로 접근하는 경우의 성능 대신 배열 요소를 삽입 또는 삭제하는 경우의 성능을 선택한 것이다. 자바스크트를 만들때 좀더 효율적인 방법으로 선택을 해서 만들어 냈다는 것이 개발자의 입장에서 많이 생각했던 것 같다. 그만큼 많은 문..

javascript 2023.06.04

Rest파라미터

Rest 파라미터 (나머지 매개변수)는 매개변수 이름 앞에 세개의 점 ...을 붙여서 정의한 매개변수를 의미한다. Rest파라미터는 함수에 전달된 인수들의 목록을 배열로 전달받는다. Rest파라미터는 먼저 선언된 매개변수에 할당된 인수를 제외한 나머지 인수들로 구성된 배열이 할당된다. Rest파라미터는 반드시 마지막 파라미터, 매개변수이어야 한다. (Rest파라미터에는 기본값을 지정할 수 없다.) Rest 파라미터와 arguments객체 arguments객체는 함수 호출 시 전달된 인수들의 정보를 담고 있는 순회 가능한 유사 배열 객체이며 함수 내부에서 지역 변수처럼 사용할 수 있다. arguments는 객체배열이 아닌 유사 배열 객체이므로 배열메서드를 사용할려면 prototype.call이나 Funct..

카테고리 없음 2023.06.01

ES6 추가 기능

자바스크립트의 함수는 일반적인 함수로서 호출할 수도 있고, new연산자와 함께 호출하여 인스턴스를 생성할 수 있는 생성자 함수로서 호출할 수도 있으며, 객체에 바인딩되어 메서드로서 호출할 수 도 있다. 이는 언뜻 보면 편리한 것 같지만 실수를 유발시킬 수 있으며 성능면에서도 손해라고 한다. 왜 일까? ES6 이전에 일반적으로 메서드라고 부르던 객체에 바인딩된 함수도 호출할 있는 함수 객체 callable이며 constructor이다 인스턴스를 생성할 수 있는 함수 객체를 === constructor, 인스턴스 생성 불가 함수 객체 === non-constructor 객체에 바인딩된 함수를 생성자 함수로 호출 가능하다는 것은 문제가 있다고 한다. 객체에 바인딩된 함수가 constructor라는 것은 객체에..

javascript 2023.05.31

new 연산자

new연산자와 함께 함수를 호출하면 해당 함수는 생성자 함수로 동작한다. 함수 객체의 내부 메서드 [[Call]]이 호출되는 것이 아니라 [[Construct]]가 호출된다. 단 new 연산자와 함께 호출하는 함수는 non-constructor가 아닌 constructor이어야 한다. function add(x, y) { return x + y; } //생성자 함수로서 정의하지 않은 일반 함수를 new연산자와 함께 호출 let inst = new add(); console.log(inst); //add {} function createdUser(name, role) { return { name, role }; } //일반 함수를 new 연산자와 함깨 호출 inst = new createdUser('lee..

javascript 2023.04.23