본문 바로가기

분류 전체보기

(45)
[6kyu] Simple string expansion 문제설명Description:Consider the following expansion:solve("3(ab)") = "ababab" -- "ab" repeats 3 times solve("2(a3(b))" = "abbbabbb" -- "a3(b)" == "abbb" repeats twice. Given a string, return the expansion of that string.Input will consist of only lowercase letters and numbers in valid parenthesis. There will be no letters or numbers after the last closing parenthesis.More examples in test cases.Goo..
[ES6] 클래스(class) 클래스JS에는 정확히 클래스라는 개념 자체가 있지는 않았다. 그러나 그와 비슷한 프로토타입 기반 방식을 구현해서 상속 등을 구현했는데, ES6 에서는 클래스라는 개념이 명시적으로 생겼다. class Book{// 속성(프로퍼티) constructor(title, author, price){this.title = title;this.author = author;this.price = price;} // 메서드(프로토타입객체에 쓰던것)book_info() {console.log(`${this.title}, ${this.author})`;}} // end class let book = new Book('난중일기', '이순신', '12000'); book.book_info(); // '난중일기, 이순신' 이런 ..
[ES6] 배열과 객체의 비구조화 배열과 객체의 비구조화비구조화 할당(destructuring assignment) 구문은 배열이나 객체에 있는 각 데이터의 값을 자동으로 추출하기 위한 방법이다. 배열 비구조화let [a, b] = [3, 4]; // a = 3, b = 4 를 대입console.log(`${a}, ${b}`); // "3, 4" [a, b] = [b, a]; // a = b, b = a를 대입(교환)console.log(`${a}, ${b}`); // "4, 3" [a, b] 에 우측 배열 [3, 4]의 값을 추출해 각각 순서대로 전달받는다. 순서를 바꾸어 대입하면 값을 서로 교환하는 처리가 가능해진다. (원래는 temp같은 임시 저장할 변수가 필요한데 간단해졌다.) 대입할 변수의 갯수와 배열의 크기가 일치하지 않아도 ..
[ES6] 템플릿 표현식 템플릿 표현식자바스크립트는 코드를 쓸 때 문자열, HTML 등과 같이 쓰면, 보기에도 쓰기에도 불편하다. 예를 들면, let a = 1, b = 2, c = 3; let sentenceWithVar = 'a = ' + a + ', b = ' + b + ', c = ' + c + '\n';console.log(sentenceWithVar); // a = 1, b = 2, c = 3 문자열(HTML) 부분과 변수 부분을 따옴표로 하나하나 나누고 ' + ' 기호로 다 붙여주어야 한다. 그래서 ES6에서 나온 해결책이 템플릿 표현식이다.ES6에서는 역따옴표( ` )로 이를 간단히 표현할 수 있다. let a = 1, b = 2, c = 3;let sentenceWithVar = `a = ${a}, b = ${b..
[ES6] for ~ of문 for of 문 let numbers = [1, 2, 3, 4, 5]; for(let i of numbers){console.log(i); // 1 2 3 4 5} 이처럼 ES6에는 반복을 쉽게하기 위한 일반 for문 말고도 for~of 문이 있다. 기존에 있던 for~in문과 별다른 차이는 없지만, for of 문은 배열을 다룰 때 적합하다. for~in 문에는 다음과 같은 문제점이 있다. let numbers = [1, 2, 3, 4, 5]; for(let i in numbers){console.log(i); // "0" "1" "2" "3" "4"} 문자가 되어 나온다. 그렇기에 for~in문은 객체를 순회하면서 값을 조회하는데 편하고, for~of문은 배열에 적합하다. (* for~in문으로 객체..
[ES6] 파라미터 핸들링(parameter handling) 파라미터 핸들링기본파라미터 function addNum(a, b){console.log(a + b); // NaNconsole.log(a); // 5console.log(b); // undefined} addNum(5); 위처럼 전달받을 변수는 2개인데 한개만 전달했을 경우 값의 연산이 제대로 되지 않는다. API 같은 경우 필요한 파라미터만 전달하도록 만들어져있으므로 전달받은 값이 없을 경우 기본적으로 나머지는 0 으로 처리해서 연산하도록 해야한다. 이것을 기본 파라미터 설정이라 하는데, 아래와 같이 할 수 있다. var addNum = (a = 0, b = 0 ) => { // 파라미터 기본값을 설정함.console.log(a + b); // 5console.log(a); // 5console.log..
[ES6] 화살표 함수(Arrow functions) 화살표 함수(Arrow functions) 화살표 함수는 기존의 function 표현 방식에 비해 간결하게 표현 할 수 있는 방법이다. => 연산자를 사용하고, 익명함수에만 사용할 수 있기 때문에 메서드 형식으로 쓸 수는 없다. * 익명함수: function(){ .... } var getName = function(){ console.log('Harvey');};getName(); // "Harvey" 위와 같은 ES5의 익명함수 표현식이 있는데 var getName = () => { console.log('Harvey'); };getName(); // "Harvey" 이처럼 바꿀 수 있다. var getName = () => console.log('Harvey'); getName(); // "Harv..
[ES6] 호이스팅(Hoisting) Hoisting(호이스팅) 통상적으로 컴파일러는 컴파일을 할 때 위에서 아래로 읽기 때문에 상식적으로 어떤 변수를 참조하는 처리문보다 아래에 변수를 선언하면 안 된다. 근데 JS에서는 변수가 처리문보다 밑에 있어도 에러가 뜨지 않고 변수 선언을 위로 끌어올려 읽는다. 이를 JS에서 '호이스팅' 이라한다. 변수의 호이스팅 console.log(num); // undefined var num = 3; // var 변수 선언console.log(num); // 3 첫 번째 줄에서 에러가 뜨는게 상식적으로 맞지만 JS에서는 아래에 선언한 num이 있으므로 'var num;'이 호이스팅 되어 undefined가 나오게 된다. 호이스팅은 정의는 해당되지 않고 선언만 해당되기에 저러한 결과가 나오게 된다. 그렇다고 ..