symbol은 다음 처럼 만들 수 있다.
Symbol()
하지만 만약 만들고 난 후에는 변경할 수 없고 같은 값을 가진 심벌을 만들 수 도 없다.
ex code
let var1 = Symbol();
let var2 = Symbol();
var1 === var2 //false
ex code 2
let id = Symbol()
const member = {
name : "Kim",
[id] : 12345
}
member
member[id]

또한 symbol이 여러개가 된다면 개발자가 모두 기억을 하기는 쉽지 않을 것이다.
그렇기에 주석마냥 symbol에 설명을 달 수 있다.
Symbol("explain")
let grade = Symbol("garde")
member[grade] = "VIP"
member

strong data type check => usually C,JAVA,C++ ...etc
weak data type check => Python3, JavaScript
문자열 사칙연산 -> 숫자형으로 변환 후에 연산됨
숫자 + 문자 -> 숫자가 문자열로 바뀜
ex code
one = "20"
two = 10
one + two //"2010"
one - two // 10
+는 더하기의 뜻을 가지기도 하지만 앞에 문자열이 있을 경우 연결연산자로 동작한다.
반면 , 뺄셈, 곱셈, 나누기 는 숫자만 가능하므로 문자열을 숫자로 바꿔서 인식한다.
Number()
parseInt()
parseFloat()
Number() --> ??
| 기존 유형 | 변환 결과 |
|---|---|
| ture | 1 |
| false | 0 |
| 숫자 | 숫자 |
| null | 0 |
| undefined | NaN |
| 정수 문자열 | 정수(앞의 0은 제거) |
| 실수 문자열 | 실수(앞의 0은 제거) |
| 16진수 문자열 | 10진수 |
| 빈 문자열 | 0 |
| 기타 | NaN |
parseInt() && parseFloat()
에를 들면 prompt()로 입력받은 숫자는 연산을 할 때는 숫자로 ㅏㅈ동 형 변환이 될 지 몰라도 결국에는 최종적으로 문자열로 남게 된다.
이 문제(?)를 해결하고자 parseInt(), parseFloat() 함수가 나왔고 이 함수를 이용하면 명시적으로 문자로 인식되는 숫자를 숫자로 인식되는 숫자로 바꿀 수 있다고 한다.

toString()
//use like
(value).toString()
(value).toString(/*default value*/)
num = 10
isEmpty = true
num.toString() //'10' 10진수 문자열
num.toString(2) //'1010' 2진수 문자열
isEmpty.toString() //'true'
or
String()
//use like
isFull = false
isitValue = null
String(isFull) // 'false'
String(isitValue) //'null'
Boolean(/*value*/)
truable data
falsable data
(value).toFixed()