FrontEnd/JavaScript
-
0.1+0.2 = 0.3이 아니다? - 부정확한 계산FrontEnd/JavaScript 2023. 1. 30. 13:35
자바스크립트를 포함한 다른 언어에서도 발생하는 현상이다. 10진수로 표현한 0.1과 0.2를 더하면 우리는 쉽게 0.3을 계산할 수 있지만 컴퓨터는 이진수로 숫자를 기억하기 떄문에 발생하는 오차이다. 이진수로 이루어진 숫자는 0과 1로 구성되어 0.1,0.2같은 분수는 이진법으로 표현하면 무한 소수가 됩니다. 1/3을 십진법으로 표현하면 0.3333...이 되는 것 처럼요. 10진법에서 1/3을 정확하게 나타낼 수 없듯이, 2진법을 사용해 0.1과 0.2를 정확하게 저장하는 방법은 없습니다. 이 문제를 어떻게 해결할까요? 가장 신뢰할만한 방법은 toFixed() 메서드를 사용해 어림수를 만들면 됩니다. toFixed()함수는 숫자를 전달받아 괄호 안에 인수만큼 소숫점자리수까지 계산한 뒤 반올림하여 문자열..
-
값이 확정되어있는 피연산자를 찾는 법 = nullish 병합 연산자 '??'FrontEnd/JavaScript 2023. 1. 24. 05:53
nullish병합 연산자란 뭘까? "nullish 병합 연산자(nullish coalescing operator) ??를 사용하면 짧은 문법으로 여러 피연산자 중 그 값이 ‘확정되어있는’ 변수를 찾을 수 있습니다. " 라고 설명하고 있다. 여기서 확정되어 있는이란 null이나 undefined가 아니라는 뜻이다. let firstName = null; let secondName = null; let nickName = "David"; console.log(firstName??secondName??nickName??"익명") 위 코드는 출력해보면 nickName인 "David"가 출력된다. 만약 nickName까지 undefined였다면 마지막에 있는 "익명"이 출력됐을 것이다. nullish연산자는 ||..
-
var Hoisting이 뭘까?!FrontEnd/JavaScript 2023. 1. 22. 02:00
우리는 변수를 선언할 때 const와 let을 주로 사용하지만 var라는 아이도 사용하는 사람이 있다. console.log(a); // Error const a = 10; console.log(b) // undefined & Not Error var b; 위에 보이는 것처럼 const로 선언한 a는 const a = 10이 나오기 전에 콘솔로 출력하려면 error가 발생한다. 그러나 var는 undefined가 출력된다. 이유는 JS엔진 실행 context에 있다. hoisiting이란 끌어 올리는 것을 사전적으로 의미하는데 이런 행동은 사실 var뿐만 아니라 function, const, let도 이뤄진다. 프로그램이 동작하면 실행 컨텍스트에서 변수 오브젝트에 선언된 변수들을 전부 담기 시작한다. 여..
-
JS엔진이 일을 처리하는 방법FrontEnd/JavaScript 2023. 1. 21. 03:42
우리가 작성한 JS파일에 있는 함수들은 어떻게 동작할까? JS엔진이 동작할때 Stack과 Que가 사용된다. 자료구조에서 흔히 들어봤을법 한데 Stack은 나중에 들어온 일이 먼저 처리된다.(Last In First Out) Que는 반대로 먼저 들어온 일이 가장 먼저 처리된다.(First In First Out) JS엔진에서 우리가 작성한 코드를 천천히 한 줄씩 읽어나간다. 그리고 함수를 호출하면 그 함수를 stack에 쌓게 된다. stack에 처리해야할 일이 쌓이면 JS엔진은 call Stack에 쌓인 일들을 하나하나 처리해나간다. 하지만 우리가 브라우저를 이용하면서 js에서 처리해야할 일 뿐만 아니라 render나 Web APIs에서 처리해야할 일들도 있는데 이를 도와주는 게 바로 event loo..