원시 값(primitive, 또는 원시 자료형)이란 객체가 아니면서 메서드 또는 속성도 가지지 않는 데이터입니다.
모든 원시 값은 "불변"하여 변형할 수 없습니다. 원시 값 자체와, 원시 값을 할당한 변수를 혼동하지 않는 것이 중요합니다.
변수는 새로운 값을 다시 할당할 수 있지만, 이미 생성한 원시 값은 객체, 배열, 함수와는 달리 변형할 수 없습니다.
언어에서는 원시 값을 변경하는 기능을 제공하지 않습니다. 대부분의 경우, 원시 값은 언어 구현체의 가장 저수준 단계에서 표현됩니다.
원시 값에는 7가지의 종류가 있지만 제가 일단 아는 5가지만 적어보겠습니다.
string 타입은 '', "" 로 작성한다. ex) '문자열', "문자열"
말 그대로 문자열이기 때문에 숫자를 "1" 이렇게 적어도 되고 숫자든 문자든 타입 정의가 다 가능합니다.
숫자형은 따옴표 없이 그냥 써도 됩니다. ex) 1, 2, 3, 10
boolean은 2진수로 논리학에서 참(true)과 거짓(false)을 나타내는 데 사용됩니다.
또한, 논리 연산이란 주어진 논리식을 판단하여 참(true)과 거짓(false)을 결정하는 연산입니다.
59 > 52 = true
0 < -100 = false
null은 개발자가 변수를 선언하고 직접 값을 0이나 없음으로 의도적으로 표시하는 데이터 타입을 말합니다.
예를 들어 휴지로 비유해서 설명해보자면 휴지를 다 쓰고 빈 휴지곽도 없을 때가 null입니다.
undefined는 변수를 선언하고 값을 할당하는 것을 까먹고 할당하지 못했거나
할당을 아직 하지 않았을 때 반환되는 데이터를 말합니다.
null과 같이 휴지로 비유해서 설명해보자면 휴지를 다 쓰고 빈 휴지곽은 남아있는 상태가 undefined입니다.
형변환은 자료형이 변환되는 것을 말합니다.
숫자에 문자를 더하게 되면 문자형으로 형변환이 일어납니다.
let number1 = 1
let number4 = "4"
1은 숫자형이었지만
let number14 = number1 + number4를 하게 되면
14라는 문자형으로 형변환 된다.
console.log(number1(숫자형) + number4(문자열);
즉 숫자형과 문자형이 같이 있을 때는 문자열로 변환된다. == 14
console.log(typeof number14);

String (문자), Number(숫자), Boolean(true,false)
Undefined(변수는 선언되어 있으나 값을 할당하지 않음), null(변수 선언 후 값을 없음 할당)
자바와 다르게 자바스크립트는 int, string 데이터 타입을 정해줬을 때
같은 데이터 타입으로만 형변환할 수 있는게 아니라 따로 정해주지 않고
문자형에서 자료형으로 변환이 자유롭게 가능하다.
자바 = 정적 , 자바스크립트 = 동적
let fifty = 50;
let twentyfive = "25";
x = fifty + Number(twentyfive);
// 원래 twentyfive 변수의 할당된 값은 문자형인 25라는 값인데 Number()으로 숫자형으로 형변환을 해줌
console.log(x); -> 75
// 그래서 결과값이 75가 나오게 된다.
console.log(fifty + twentyfive); -> 5025
// 숫자형과 문자형을 더하게 되면 숫자형이 문자형으로 자동 형변환 되어서 더해진다.