

배정밀도 64 비트 부동소수점 형식을 따른다는 것은 10진수의 숫자를 2진수 비트로 변환하여 64 비트 형식으로 메모리에 저장된다는 것이다. 64 비트로 표현하는 값은 정밀도에서 한계가 있기 때문에 근사치의 값으로 변환 된다. 때로는 정확한 숫자 값이 아닐 수 있다.

문자열의 줄바꿈을 표한할 때 옛날 프린터의 동작 방식에서 따온 용어들이 있다.

VS Code 어디선가 CRLF와 LF를 본 기억이 있었다. (바로 여기)

하단 오른쪽 상태 표시줄에서 Line Sequence를 LF 또는 CRLF로 변경할 수 있다. 바꿔도 차이가 눈으로 보이지 않는다. 하지만 16진수로 파일을 확인하면 줄바꿈 부분에서 차이가 있다.
Hex Editor VS Code Extension을 설치 후 파일을 열어보면 LF일 때는 줄바꿈이 0A (라인 피드 LF)로 표현되고 CRLF일 때는 0D 0A (캐리지 리턴 CR + 라인 피드 LF)로 표현된 것을 확인할 수 있다.

const key = Symbol("key");0100 0001은 String 타입으로는 'A', Number 타입으로는 65로 해석된다.산술 연산자
NaN(Not a Number)를 반환한다.++, -- 연산자는 부수효과가 있다. prefix로 연산자가 붙는지 postfix로 연산자가 붙는지에 따라 부수효과의 시점이 다르게 동작한다.// Postfix ++
let a = 1;
const b = a++;
// a = 2, b = 1
// b에 a를 할당 > a 값 1 증가// Prefix ++
let a = 1;
const b = ++a;
// a = 2, b = 2
// a 값 1 증가 > b에 a를 할당"1" + 2; // '12'비교 연산자
동등 연산자(==)는 값이 같은지 비교하지만 타입이 같은지는 비교하지 않는다
일치 연산자(===)는 값과 타입이 모두 같은지 좀 더 엄격한 비교를 한다
비교시 동등 연산자보다는 일치 연산자(===)을 사용하는 것이 좋다
NaN 여부를 확인할 때는 Number.isNaN() 함수를 사용한다
Object.is() 메서드 사용시 ===을 사용했을 때와 다른 경우가 있다.
// === 로 값 비교
+0 === -0; // true
NaN === NaN; // false
// Object.is() 로 값 비교
Object.is(+0, -0); // false
Object.is(NaN, NaN); // true
삼항 연산자
const result = a > b ? "a가 b보다 크다" : "a가 b보다 크지 않다";논리 연산자
!(a || y) === !a && !b;typeof 연산자
지수 연산자
// ** 지수 연산자는 ES7에 도입되었다
2 ** 2;
// 이전에는 이렇게 지수 연산을 했었다
Math.pow(2, 2);
// 지수연산자의 피연산자가 음수일 때는 꼭 괄호를 붙여야한다. 그렇지 않으면 SyntaxError가 발생한다
-2 ** 2;
// 정상 동작
(-2) ** 2;
// 할당 연산자와 함께 사용 가능
let number = 2;
number **= 2
그 외의 연산자
모던 자바스크립트 Deep Dive 이 책 정말 좋은 것 같습니다. 더 빨리 이 책을 읽었더라면 얼마나 좋았을까하는 생각이 들었고 지금이라도 접하게되어 다행입니다. 새롭게 배우는 내용들이 많아서 매우 좋았습니다. 혼자 읽었으면 꾸준함이 떨어졌을텐데 스터디 참여하기 잘했다는 생각이 들었습니다. (벌금을 내지 않기위한 몸부림)