순수함수함수형 프로그래밍 패러다임의 한 부분이며, 두 가지 규칙을 가진다. 1. 같은 입력값이 주어졌을 때, 언제나 같은 결괏값을 리턴한다.const add = (x,y) => x + y;console.log(add(10,20)); // 30 2. 사이드 이펙트를 만들지 않는다.const z = 1;const sum = (x,y) => x + y + z;console.log(sum(10,20));사이드 이펙트는 없지만, 이렇게 함수 밖의 스코프에 접근하는 것도 이 함수를 inpure함수로 만든다. inpure 함수의 예예시 1let x = 0;const numberUp = () => x += 1;console.log(numberUp()); // 1console.log(x); // 1외부에서..
분류 전체보기

Intersection observer기본적으로 브라우저 뷰포트(Viewport)와 설정한 요소(Element)의 교차점을 관찰하며, 요소가 뷰포트에 포함되는지 포함되지 않는지, 더 쉽게는 사용자 화면에 지금 보이는 요소인지 아닌지 구별하는 기능을 제공한다. 이 기능은 비동기적으로 실행되기 때문에, scroll 같은 이벤트 기반의 요소 관찰에서 발생하는 렌더링 성능이나, 이벤트 연속 호출같은 문제가 발생할 일 없이 사용할 수 있다. 사용자가 아래로 스크롤하다가 타깃 요소와 뷰포트(intersection root)가 겹칠 때, 이 중첩 또는 교차의 양을 intersection observer api가 관찰하는 것이다. target element: 말 그대로 타깃(대상) 요소이다.intersection..
함수 선언식과 표현식 - 함수 선언식function funcDeclaration(){ return ‘A function declaration 함수 선언식’;} - 함수 표현식let funcExpression = function () { return ‘A function expression 함수 표현식’;}함수를 만들고 변수에 할당하는 경우이다. 함수는 익명이므로 이름이 없다. 함수 선언식은 호이스팅에 영향을 받지만, 함수 표현식은 호이스팅의 영향을 받지 않는다. 즉시 실행 함수(IIFE)즉시 실행 함수 표현(Immediately Invoked Function Expression)은 정의되자마자 즉시 실행되는 자바스크립트 함수를 말한다.( function () { // 내용 };)();첫 번..

얕은 비교숫자, 문자열 등 원시 자료형은 값을 비교한다.배열, 객체 등 참조 자료형은 값 혹은 속성을 비교하지 않고, 참조되는 위치를 비교한다. const obj1 = { a: 1, b: 2 };const obj2 = { a: 1, b: 2 };console.log(obj1 === obj2); // false 값 대신 참조 위치를 비교하기 때문에 false가 나온다. 깊은 비교 얕은 비교와 달리 깊은 비교는 객체의 경우에도 값으로 비교한다.const obj1 = { a: 1, b: 2 };const obj2 = { a: 1, b: 2 };console.log(JSON.stringify(obj1) === JSON.stringify(obj2)); // trueJSON.stringify()를 사용한다...

클로저란? 다른 함수 내부에 정의된 함수가 있는 경우 외부 함수가 실행을 완료하고, 해당 변수가 해당 함수 외부에서 더 이상 액세스할 수 없는 경우에도 해당 내부 함수는 외부 함수의 변수 및 범위에 액세스 할 수 있는 것. function outerFunction(outerVariable){ return function innerFunction(innerVariable){ console.log('Outer Variable: ' + outerVariable); console.log('Inner Variable: ' + innerVariable); }}const newFunction = outerFunction('outside');newFunction('inside');위의 코드에서 ou..

동기와 비동기동기는 이전의 작업이 끝나야 다음 것을 할 수 있지만, 비동기는 여러 작업을 동시에 진행할 수 있다. 자바스크립트는 동기 언어이다.자바스크립트는 한 줄을 실행하고 다음 줄을 실행하는 ‘동기 언어’이다. 그런데 setTimeout 함수처럼 비동기로 작동하는 함수가 있다. 이는 자바스크립트의 부분이 아니다. 브라우저에서 사용을 한다면 브라우저 api를 사용하는 것이고, Node에서 사용한다면 Node api를 사용하는 것. 즉! 자바스크립트는 비동기처럼 사용할 수는 있지만, 결국은 다른 것의 도움을 받아서 비동기처럼 사용할 수 있는 것! 자바스크립트 동작 과정 자바스크립트 코드를 실행하려면 자바스크립트 엔진이 필요하다. 이때 엔진은 두 가지 주요 요소로 구성된다. 메모리 힙 - 메모리..