Topic/JavaScript
-
Promise, 비동기, async, non-blockTopic/JavaScript 2021. 12. 22. 16:13
시간 관점에서는 Async와 Sync로 나눌 수 있고, 제어권 관점에서는 blocking과 non-blocking으로 나눌 수 있다. Promise 비동기적인 것을 수행할 때 콜백함수 대신 유용하게 쓸 수 있는 object 정해진 기능을 수행하고 나서 정상적으로 마무리되었다면 결과값을 전달해준다 문제가 생겼다면 error를 전달해준다. state: pending -> fulfilled or rejected Producer vs Consumer reject(): 주로 error object를 통해서 값을 전달한다. promise // .then(value =>{ console.log(value); }) .catch(error =>{ console.log(error); }) .finally(()=>{cons..
-
JSON 정리Topic/JavaScript 2021. 12. 22. 15:22
JSON JavaScript Object Notation 서버 통신의 시작점 Key - Value 세트로 이루어진 data object를 전달하기 위해 사람이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷 특히 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법 특징 간결한 데이터 교환 포맷 읽기 쉬운 심플한 텍스트 기반 구조 Key - Value 세트 네트워크끼리의 연결 간의 데이터 직렬화 및 전송에 사용 프로그래밍 언어나 플랫폼에 상관없이 JSON을 사용가능 Stringify(Obj) let json = JSON.stringify(true); console.log(json) //true; json = JSON.stringify(['lion','banana']); console.log(json..
-
비동기, 고차함수, 콜백,Topic/JavaScript 2021. 12. 20. 22:12
비동기 자바스크립트는 동기적인 친구이다. 코드 작성 순서대로 작동하기 때문 / 호이스팅: var, function 선언들이 제일 위로 올라가는 것 예시: setTimeout() -> 정해진 시간 후에 콜백함수를 부름 setTimeout(function() { // 1초 후에 2를 출력해줘 console.log('2'); }, 1000) 콜백은 무조건 비동기적인 것인가 ? No! Synchronous callback(동기적 실행) function printImmediately(print) { print(); } printImmediately(() => console.log('happy')); // Asynchronous callback 함수의 선언이니 제일 위로 호이스팅 된다! Asynchronous c..
-
재귀함수 문제Topic/JavaScript 2021. 12. 18. 22:58
재귀함수 사례 재귀함수 문제_1 function unpackGiftbox(giftBox, wish) { for (let i = 0; i < giftBox.length; i++) { if (giftBox[i] === wish) { return true } else if (Array.isArray(giftBox[i])) { let result = unpackGiftbox(giftBox[i], wish); if (result) return true; } } return false; } 주어진 선물박스와 위시가 일치하는지 확인하는 문제이다. giftBox가 이렇게 주어지고 ['macbook', ['eyephone', [], ['postcard']], 'iphone']; wish로 'iphone'을 원한다면 ?..
-
JSONTopic/JavaScript 2021. 12. 15. 21:34
StringifyJSON JSON: JavaScript Object Notation , 데이터 교환을 위해 만들어진 객체 형태의 포맷 JSON의 탄생 배경 객체를 타입 변환해서 String으로 변환할 경우 객체 내용을 포함하지 않는다. 위의 이유로 객체를 JSON의 형태로 변환하거나, JSON을 객체의 형태로 변환하는 방법을 이용한다. JSON.stringify: Object type을 JSON으로 변환한다. JSON으로 변환된 객체의 타입은 문자열이다. 이 과정을 직렬화 (serialize) 라고 부른다. JSON.parse: JSON을 Object type으로 변환한다. 반대로 JSON.parse로 문자열을 객체의 형태로 만든다. 이 과정은 역직렬화 (deserialize) 라고 부른다. JSON의 ..
-
클래스를 이용한 모듈화, Prototype, 생성자 함수Topic/JavaScript 2021. 12. 13. 21:08
정답을 맞추는게 답이 아니라 끝까지 도전하는 자세가 중요 ! 객체 지향 JavaScript 객체 지향 프로그래밍: OOP, Object-oriented programming 데이터와 기능을 한 곳에 묶어서 처리 / 속성과 메소드가 하나의 "객체" 라는 개념이며 클래스(Class)라고 부른다. 객체 지향이 트렌드지만, 객체 지향이 무조건 좋은건 아니다 ! 하나의 프로그래밍 방법론일뿐, 각 방법론의 장단점을 잘 알고, 상황에 맞는 방법론을 선택하는게 Best! ex) 메모리 관리가 중요하다면 ? -> 메모리를 적게 쓰는 절차지향 사람들과의 협업이 필요하면? -> 코드 이해가 쉬운 객체지향 자바스크립트는 객체지향 언어가 아니라 프로토타입 기반 언어이다! 자바스크립트의 클래스는 프로토타입을 이용해 구현하는 것!..
-
고차함수, map, filter, reduceTopic/JavaScript 2021. 11. 30. 21:28
고차 함수 함수를 리턴할 수 있는 함수 고차함수 = 함수를 전달받거나 함수를 리턴한다 = 사고(함수)에 대한 복잡한 로직은 감추어져 있다 = 사고 수준에서의 추상화 콜백 함수 다른 함수의 인자로 전달되는 함수 '함수를 리턴하는 함수'와 '함수를 인자로 받는 함수' 모두, 용어를 고차 함수로 사용 고차함수 map 하나의 데이터를 다른 데이터로 맵핑(mapping) 할 때 사용 배열의 각 요소가 특정 로직에 의해 다른 요소로 지정(map)된다. 고차함수 filter 조건에 맞는 데이터만 분류(filtering) 할 때 사용 true인 경우만 따로 분류한다. 고차함수 reduce 여러 데이터를, 하나의 데이터로 응축(reduce)할 때 사용 배열의 각 요소를 특정 로직에 따라 원하는 하나의 형태로 응축한다.
-
spread, rest, 구조분해, 화살표함수, 배열, 객체Topic/JavaScript 2021. 11. 25. 21:44
Spread 문법 배열을 풀어서 인자로 전달하거나, 배열을 풀어서 각각의 요소로 넣을 때에 사용 spread 문법은 기본 배열을 변경하지 않는다. (immutable) 테스트 함수 expect 함수 사용법 expect(테스트하는 값).기대하는 조건 expect(isMost(3)).to.be.true // => 'isMost(3)'의 결과값은 참(true)이어야 한다'. expect(1 + 2).to.equal(3) // => 'sum(1, 2)의 결과값은 3과 같아야(equal) 한다'. -> '기대하는 조건'에 해당하는 함수를 matcher라고 한다. '참인 것이어야 한다' => to.be.true '3과 같아야 한다' => to.equal(3) expect('테스트하는 값).to.equal('기대하는..