Front-end/JavaScript 11

JS) 배열의 얕은 복사와 깊은 복사

자바스크립트에서 배열과 객체를 복사할 때, 얕은 복사와 깊은 복사를 구분하여 사용합니다. 얕은 복사 얕은 복사는 객체나 배열의 1단계 프로퍼티와 요소들만 복사하는 것을 말합니다. 객체나 배열 내부에 객체나 배열이 포함되어 있을 경우, 내부 객체나 배열은 참조 관계를 유지하게 됩니다. 얕은 복사는 배열의 slice() 메소드를 이용하여 구현할 수 있습니다. const arr1 = [1, 2, [3, 4]]; const arr2 = arr1.slice(); // 얕은 복사 console.log(arr1[2] === arr2[2]); // true 위의 코드에서 arr1 배열을 slice() 메소드를 이용하여 복사하였습니다. arr2는 arr1과 같은 배열이지만, 내부의 배열 [3, 4]는 참조 관계를 유지하..

JS) not not 연산자 vs non-null assertion 연산자

not not 연산자와 non-null assertion 연산자는 모두 JavaScript와 TypeScript에서 사용되는 연산자 중 하나이지만, 다른 목적으로 사용됩니다. 1. not not(!!) 연산자 not not(!!) 연산자는 Boolean 값을 반환합니다. 이 연산자는 값을 불린값으로 변환할 때 사용됩니다. 이 연산자를 사용하면, 값이 존재하면 true를 반환하고, 값이 존재하지 않으면 false를 반환합니다. 예를 들어, 다음과 같이 사용할 수 있습니다. const myValue = 0; const myBoolean = !!myValue; // false not not(!!) 연산자는 값이 falsy한 값일 경우 false를 반환합니다. JavaScript에서는 다음과 같은 값을 fals..

JS) Promise를 반환하는 함수의 다양한 표현 (fetch, axios)

이번 예시는 React Query v4 의 useQuery라는 훅의 Option인 queryFn을 예시로 살펴본다. queyrFn는 promise를 반환하는 함수여야 한다. useQuery는 주로 데이터 fetching으로 사용하는데, 이를 위해 fetch 와 axios를 이용한 다양한 표현들을 알아보자. 각 api는 async/await 와 Promise chaining 을 사용하여 나타낼 수 있다. 참고로, axios와 fetch의 성능 차이는 크게 없으며, 아래 함수들의 return값은 모두 Promise{} 이다. axios와 fetch의 성능 차이는 크게 없다. 다만, axios가 가독성이 더 좋고 사용할 수 있는 기능이 많기 때문에 더 선호되는 경향이 있다. fetch는 웹 내장 함수이기 때문..

JS) then vs async/await ... (예시: fetch API)

fetch API에서 async/await과 then은 모두 비동기 코드를 작성하는 방법입니다. 각각의 사용 시기는 코드 구조 및 개발자 선호도에 따라 다를 수 있습니다. async/await를 사용한 비동기 작업 async/await는 비동기 코드를 작성할 때 사용됩니다. fetch API는 네트워크 요청이 비동기적으로 처리되기 때문에, async/await를 사용하여 코드를 동기적으로 작성할 수 있습니다. async function fetchData() { try { const response = await fetch('https://example.com/data.json'); const data = await response.json(); console.log(data); } catch (error..

JS) fetch VS axios (API 호출)

Fetch fetch는 ES6에서 도입된 네이티브 API로, 브라우저에서 제공됩니다. fetch는 Promise를 반환하며, 사용법은 다음과 같습니다. fetch(url) .then(response => { if (!response.ok) { throw new Error("HTTP error " + response.status); } return response.json(); }) .then(data => { console.log(data); }) .catch(error => { console.error(error); }); Axios axios는 브라우저와 Node.js에서 모두 사용할 수 있는 라이브러리입니다. axios는 Promise를 반환하며, 사용법은 다음과 같습니다. axios.get(url..

JS) [Alert] 웹 사이트에 경고 문구 띄우기

웹 사이트에서 경고 문구를 띄우려는 경우에 사용할 수 있다. 하지만, 이 방식은 웹 페이지의 기본 동작을 일시정지 시킨다. 예를 들어 어떤 링크에 alert를 연결하여 사용한다고 하자. 링크를 누르면 해당 페이지로 넘어가야 하는데, 링크를 눌렀을 때 alert 에 해당하는 코드를 써놓으면 페이지로 이동하기 전에 경고 문구를 보여준다. 해당 경고문구가 사라지면 페이지를 이동한다. 이러한 이유(웹 페이지의 기본 동작 일시 정지) 때문에 개발자들이 많이 사용하지는 않는다. alert("Stop!") 참고) https://nomadcoders.co/javascript-for-beginners

JS) [Backtick] 템플릿 리터럴 ... 문자열과 변수를 같이 사용하기

문자열과 변수를 같이 사용할 수 있는 편리한 방식이 있다. 키보드 기준으로 ESC 아래의 '~' 표시를 shift 없이 누른 문자가 'backtick' 이다. ` ` 생긴 모습은 작은 따옴표와 같다. 사용은 $ 기호와 함께 사용한다. `Hello, ${name}!` 자연스럽게 문자열과 함께 쓸 수 있으며, 괄호 안에 넣은 변수만 그 자리로 들어가게 된다. 아주 유용하다. 참고) https://curryyou.tistory.com/185 https://nomadcoders.co/javascript-for-beginners/lectures/2903

JS) [CSS in JS] 자바스크립트에서 CSS 사용하기

JavaScript 파일에서 CSS를 변경하는 방법에 대해 정리한다. event를 활용하여 실습을 진행한다. 1) CSS 적용 순서 실습을 통해 살펴본다. step 1 > element를 찾는다. const text = document.querySelector(".container__contents"); step 2 > event를 listen한다. text.addEventListener("click", handleTitleClick); step 3 > event에 반응한다. function handleTitleClick() { const currentColor = text.style.color; let newColor; if (currentColor == "blue") { newColor = "toma..

JS) [Event] 이벤트 활용하기 ... addEventListener, Window

document를 활용하면 많은 이벤트들을 다룰 수 있다. 간단한 예시를 통해 살펴보고, 원하는 이벤트를 찾는 방법에 대해서도 알아본다. 1) addEventListener const title = document.querySelector(".container__contents"); function handTitleClick() { title.style.color = "tomato"; } title.addEventListener("click", handTitleClick); 위 자바스크립트 코드를 활용하여 이벤트를 만들었다. document 및 querySelector로 불러온 객체를 활용하여 이벤트 및 함수를 다룬다. addEventListener 의 두 번째 파라미터에 함수명이 있는데, 원래 그 안에..

JS) [querySelector] document object를 통한 elements 접근

브라우저는 기본적으로 document라는 object를 가지고 있다. console.dir(document)를 입력하면 확인할 수 있다. 이처럼, 내가 입력하지 않은 사이트의 정보에 대해 접근하고 사용할 수 있다는 점은 아주 중요하다. JavaScript는 HTML을 읽어온다. 1) HTML 코드와 Element를 JS로 접근하기 document 객체에 있는 정보로 접근하는 것에서부터 모든 것이 시작된다. 예시로, getElementById 메서드를 통해 html 요소에 접근한다. const title = document.getElementById("contents"); 2) querySelector getElement 방식보다는 querySelector가 더 자주 쓰이는 편이다. CSS 방식으로 ele..