javascript
-
Javascript) Rest 파라미터Javascript 2022. 8. 17. 09:51
1. Rest 파라미터란 ? 매개변수 이름 앞에 점 3개 ... 을 붙여서 정의한 매개변수를 의미한다. 함수에 전달된 인수들의 목록을 배열로 받는다. function func(...rest) { console.log(rest); } func(1, 2, 3, 4); // [ 1, 2, 3, 4 ] 2. 일반 매개 변수와 함께 사용 가능 function func(param, ...rest) { console.log(rest); // [2,3,4] console.log(param); // 1 } func(1, 2, 3, 4); 3. 단 하나만 선언할 수 있음, 제일 마지막에 와야함 function func(...rest1, ...rest2) { } func(1, 2, 3, 4); // SyntaxError: ..
-
Javascript) 화살표 함수와 일반 함수의 차이Javascript 2022. 8. 16. 18:27
화살표 함수는 function 키워드 대신 화살표(=>)를 사용하여 기존의 함수 정의 방식보다 간략하게 함수를 정의할 수 있다. 그러나 정의 방식 말고도 일반 함수와 차이 나는 게 많은데 그것들에 대해서 알아보도록 하자. 1. 화살표 함수는 인스턴스를 생성할 수 없는 non-constructor다. non-constructor 란 말은 생성자 함수로서 호출할 수 없다는 말이다. 이는 곧 인스턴스를 생성할 수 없음을 의미한다. function Func() { console.log("hello"); } new Func(); // hello const Fun = () => { console.log("Hi"); }; new Fun(); // TypeError: Fun is not a constructor 2. ..
-
Javascript) 클래스Javascript 2022. 8. 16. 09:55
1. 클래스란 ? -ES6에서 새롭게 도입된 객체 생성 메커니즘. -자바나 C# 같은 클래스 기반 객체지향 프로그래밍에 익숙한 사람이 더욱 빠르게 학습할 수 있도록 클래스 기반 객체지향 프로그래밍 언어와 매우 흡사 -함수(일급객체)로서, 기존 프로토타입 기반 패턴을 클래스 기반 패턴처럼 사용할 수 있도록 하는 일종의 문법적 설탕이라고도 볼 수 있음. 클래스 몸체에서 정의할 수 있는 메서드는 constructor(생성자), 프로토타입 메서드, 정적 메서드 3가지가 있다. 클래스와 생성자 함수의 정의 방식은 형태적인 면에서 매우 유사하다. class Person { // 생성자 constructor(name) { // 인스턴스 생성 및 초기화 this.name = name; } // 프로토타입 메서듸 say..
-
Javascript) 클로저Javascript 2022. 8. 13. 17:30
1. 정의 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 클로저를 이해하기 전에 먼저 렉시컬 스코프를 알고가야한다. 자바스크립트 엔진은 함수를 어디서 호출했는지가 아니라 함수를 어디에 정의했는지에 따라 상위스코프를 결정한다. 이를 렉시컬 스코프라 한다. 처음 이 문장을 봤을 땐 난해해서 무슨 의미인지 이해가 안갔다. 하지만 코드를 작성하여 실행시켜보니 그 의미를 이해할 수 있었다. const x = 1; function outerFunc() { const x = 10; innerFunc(); } function innerFunc() { console.log(x); } outerFunc(); // 1 함수 innerFunc의 호출을 outerFunc 안에서 하도록 했지만 결과 값은 1 이 나..
-
2022 KAKAO BLIND RECRUITMENT) 주차 요금 계산Algorithm/프로그래머스 2022. 8. 4. 14:32
https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분할 정복(Divide and conquer algorithm)을 이용하여 문제에서 구해야할 값들을 세분화 시킬 수 있습니다. 1. 주차 시간 2. 주차 시간을 요금으로 환산 3. 정렬 function solution(fees, records) { var answer = []; const check = new Map(); const sum = new Map();..
-
Javascript) thisJavascript 2022. 8. 2. 19:42
동작을 나타내는 메서드는 자신이 속한 객체의 상태, 즉 프로퍼티를 참조하고 변경할 수 있어야 한다. 이 때 메서드가 자신이 속한 객체의 프로퍼티를 참조하려면 먼저 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 한다 객체 리터럴 방식으로 생성한 객체의 경우 메서드 내부에서 메서드 자신이 속한 객체를 가리키는 식별자를 재귀적으로 참조할 수 있다. const circle = { radius: 5, getDiameter() { return 2 * circle.radius; }, }; console.log(circle.getDiameter()); 생성자 함수 방식으로 인스턴스를 생성하는 경우를 생각해보자. function Circle(radius) { // 이 시점에는 생성자 함수 자신이 생성할 인스턴스..
-
2018 KAKAO BLIND RECRUITMENT) [3차] 방금그곡 - Javascript 풀이Algorithm/프로그래머스 2022. 8. 2. 14:30
입력으로 주어진 악보정보에서 '#'이 붙은 경우 문자열에서는 2칸을 차지하고 있지만 문제 해석에서는 하나로 이해하고 접근해야 하기 때문에 한글자로 바꿔주면 문제를 더 쉽게 풀 수 있었습니다. 우리는 인자 m 과 musicinfo의 3번째 인덱스 값인 멜로디를 똑같은 방식으로 변환해주어야 하기 때문에 이 부분은 외부함수로 두고 사용하였습니다. function convert(str) { if (str.includes("C#")) str = str.replace(/C#/g, "c"); if (str.includes("D#")) str = str.replace(/D#/g, "d"); if (str.includes("F#")) str = str.replace(/F#/g, "f"); if (str.includes(..
-
2018 KAKAO BLIND RECRUITMENT) [1차] 프렌즈4블록 - Javascript 풀이Algorithm/프로그래머스 2022. 8. 1. 16:13
https://school.programmers.co.kr/learn/courses/30/lessons/17679?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명이 워낙 친절하게 되어있어서 알고리즘을 구현하는데에는 크게 어려움이 없었던 문제였습니다. 재귀함수를 이용하여 매번 업데이트 되는 board 배열을 인자로 받았습니다. function solution(m, n, board) { // m: 높이 n: 폭 board = board.map((v) => v.split("")); let answer = 0; let..