js 23

[JS Deep Dive] 5장 표현식과 문

5.1 값(Value) 값이란 식(표현식)이 평가되어 생성된 결과를 말한다. // 10 + 20은 평가되어 숫자 값 30을 생성한다. 10 + 20; // 30 여기서 평가란 식을 해석해서 값을 '생성'하거나 '참조'하는 것을 의미한다. 모든 값은 데이터 타입(Data Type)을 가지며 메모리에 2진수, 즉 비트의 나열로 저장된다. // 변수에는 10 + 20이 평가되어 생성된 숫자 값 30이 할당된다. var sum = 10 + 20; 값을 생성하는 방법은 다양하게 있는데, 값을 생성하는 가장 기본적인 방법은 리터럴을 사용하는 것이다. 5.2 리터럴(Literal) 리터럴이란 값을 생성하기 위해 미리 약속한 표기법이다. 따라서, 컴퓨터가 아닌 사람이 이해할 수 있는 값을 의미한다. 자바스크립트 엔진은..

[JS] 함수의 정의 및 필요성 / 함수를 정의하는 4가지 방법

함수의 정의 함수란 ? 하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 프로그램 코드의 집합 어떠한 입력(Input)을 받아 특정한 기능이나 계산을 수행한 다음 그 결과(Output)를 돌려주는 역할을 한다. (1️⃣ input 받기 → 2️⃣ 기능 수행 → 3️⃣ output 반환) 물론, 프로그래밍에서 쓰는 함수는 입력이나 결과 없이도 함수 안에서 특정 기능만을 수행할 수도 있다. (1️⃣ input 받기 → 2️⃣ 기능 수행 OR 2️⃣ 기능 수행 only) 함수의 선언과 실행 // 1. 함수의 선언 (또는 정의) function sayHello(name) { // name이라는 매개변수가 입력되도록 만들어진 함수! console.log("Hello, " + name + "! 😆"); ..

[JS] reduce() 함수 및 응용 정리

Array.prototype.reduce() const array1 = [1, 2, 3, 4]; // 0 + 1 + 2 + 3 + 4 const initialValue = 0; const sumWithInitial = array1.reduce((accumulator, currentValue) => accumulator + currentValue, initialValue); console.log(sumWithInitial); // Expected output: 10 reduce() 함수는 배열의 각 요소에 대해 callback을 실행할 때 마다 이전 요소에 대한 실행 결과를 전달하여 단 1개의 출력 결과를 만듭니다. ​ 즉, 배열 원소를 입력으로하여 1개의 수치 또는 문자열 또는 배열 또는 딕셔너리를 만듭..

[JS & React] 얕은 비교(Shallow Equal)란 ? / 리액트에서 컴포넌트가 리렌더링되는 경우

1) 얕은 비교 const obj1 = { a: 1, b: 2 }; const obj2 = { a: 1, b: 2 }; console.log(obj1 === obj2); // false 원시 타입 데이터의 경우 '값'이 동일한지만 비교하고, 배열과 객체과 같은 참조 타입 데이터의 경우 '참조값'만 비교한다. 2) 깊은 비교 const obj1 = { a: 1, b: 2 }; const obj2 = { a: 1, b: 2 }; console.log(JSON.stringify(obj1) === JSON.stringify(obj2)); // true 얕은 비교와 달리 깊은 비교는 객체의 경우에도 값으로 비교한다. 깊은 비교 방법은 아래와 같다. 1️⃣ Object depth가 깊지 않은 경우 : JSON.st..

[JS] 자바스크립트 배열의 slice()와 splice() 함수

1) slice() 함수 slice() 함수는 배열로 부터 특정 범위를 복사한 값들을 담고 있는 새로운 배열을 만드는데 사용합니다. 첫번째 인자로 시작 인덱스(index), 두번째 인자로 종료 인덱스를 받으며, 시작 인덱스부터 종료 인덱스까지 값을 복사하여 반환합니다. 여기서 주의할 점은 첫번째 인자로 넘어온 시작 인덱스가 가리키는 값은 포함하지만, 두번째 인자로 넘어온 종료 인덱스가 가리키는 값은 포함하지 않는다는 것입니다. 첫번째 인자도 넘기지 않으면, 배열의 처음 값부터 마지막 값까지 전체를 복제해버리는 효과를 낼 수 있습니다. 두번째 인자를 넘기지 않으면, 시작 인덱스가 가리키는 값부터 배열의 마지막 값까지 모두 복사해줍니다. slice() 함수는 밑에서 다룰 splice() 함수와 달리 아무리 ..

[JS Deep Dive] 40. Event Part 2

40.5) 이벤트 객체 이벤트가 발생하면 이벤트에 관련된 다양한 정보를 담고 있는 '이벤트 객체'가 동적으로 생성된다. 생성된 이벤트 객체는 이벤트 핸들러의 첫 번째 인수로 전달된다. 클릭하세요. 클릭한 곳의 좌표가 표시됩니다. 위 예제에서는 클릭 이벤트에 의해 생성된 이벤트 객체는 이벤트 핸들러의 첫 번째 인수로 전달되어 매개변수 e에 암묵적으로 할당됨을 알 수 있다. (이는 브라우저가 이벤트 핸들러를 호출할 때 이벤트 객체를 인수로 전달받기 때문이다.) 따라서 이벤트 객체를 전달받으려면 이벤트 핸들러를 정의할 때 이벤트 객체를 전달받을 매개변수를 명시적으로 선언해야 한다. ⭐️ 이벤트 핸들러 어트리뷰트 방식으로 이벤트 핸들러를 등록했다면 다음과 같이 event를 통해 이벤트 객체를 전달받을 수 있다...

[JS Deep Dive] 40. Event

40.1) Event Driven Programming 브라우저는 처리해야 할 특정 사건이 발생하면 이를 감지하여 특정한 타입의 이벤트를 발생시킨다. ex) 클릭, 키보드 입력, 마우스 이동 등 만약에 애플리케이션이 특정 타입의 이벤트에 대해 반응하여 어떤 일을 하고 싶다면 해당하는 타입의 이벤트가 발생했을 때 호출될 함수를 브라우저에게 알려서 호출을 위임하는데, 이때 '이벤트가 발생했을 때 호출될 함수'를 이벤트 핸들러(Event Handler)라고 하고, 이벤트가 발생했을 때 브라우저에게 이벤트 핸들러의 호출을 위임하는 것을 이벤트 핸들러 등록이라고 한다. 즉, 함수를 언제 호출할지 알 수 없으므로 개발자가 명시적으로 함수를 호출하는 것이 아니라 브라우저에게 함수 호출을 위임하는 것이다. Window..