> const hello = '엄청 어려운 코드!'
// 사람이 알아볼 수 있는 설명을 작성하자! 이것이 바로 주석(comment)
/*
여러 줄의 주석을 작성하고 싶은 경우, 코드와 코드 사이에 주석을 넣을 수도 있음
*/
//들여쓰기 하지 않는 경우
if(condition){
console.log('hello, world!')
}
//탭 들여쓰기
if(condition){
console.log('hello, world!')
}
> const hello = 'hello' // single quote
> const world = "world!" // double quote
> const helloWorld = `hello world!` // bactic or back quote
> const hello = 'hello"
> hello // Uncaught SyntaxError: Invalid or unexpected token
\n(역슬래시 + n)을 사용하면 됨> const helloWorld = 'hello\nworld!\n'
> helloWorld
// hello
// wolrd
// !
\(역 슬래시)를 사용\ 없이 동일한 quote나 backtic으로 문자열 표현 시, 유효하지 않은 / 예상치 못한 토큰이라는 에러 메세지 출력> const whoIam = "I'm a programmer";
> whoIam // I'm a programmer
> const helloWorld = '"hello world!"'
> helloWorld // "hello world"
> const howAreYou = 'how\'re you?'
> howAreYou // how're you?
+ 연산자를 통해 문자열을 합칠 수 있음> 'hello'+' world'+'!' // hello world!
> 50000 // 50000
> 5e4 // 50000, 소숫점 위로 0이 4개
> 5e-4 // 0.0005, 소숫점 아래로 4자리
> 0b111 // 7, 2진법으로 표현한 7
> 0o111 // 73, 8진법으로 표현한 73
> 0x1a1 //417, 16진법으로 표현한 417
> Number('3') // 3
> Number('3.14') // 3.14
> Number('3월') // NaN
> parseInt('123')+5; // 128
> typeof parseInt('123'); // number
> parseInt('3.14'); // 3
> parseInt('3월'); // 3
> parseInt(111, 2); // 7, 즉 2진수 111은 10진수로 7
> parseFloat('3.14'); // 3.14
> 0/0 // NaN
> parseInt(prompt()) // ("abc" 입력) // NaN
> typeof NaN // number
Infinity로 나옴> 2/0 // Infinity
> -2/0 // -Infinity
> typeof -Infinity // number
> Infinity - Infinity // NaN
| 연산자 | 이름 | 의미 |
|---|---|---|
+ | Addition | 더하기 |
- | Substraction | 빼기 |
* | Multiplication | 곱하기 |
/ | Division | 나누기 |
% | Remainder = Modulo | 나머지 |
** | Exponent | 제곱 |
typeof 다음에 나오는 변수의 데이터 유형을 반환하는 특별한 연산자> const helloWorld = 'hello world!'
> typeof helloWorld; // string
> typeof `문자열`; // string
+ 연산자+ 연산자로 더하게 되면, JS는 숫자값을 문자열로 변환시킴> '문자열' + 0 // 문자열0
> '1' + 0 // 10
-,*,/) 산술 연산자+연산자가 아닌 다른 산술 연산자를 사용할 때는 다른 자료형이 먼저 숫자로 형 변환된 후 빼기를 함NaN이 되고, 여기서 0을 빼도 그대로 NaN이 됨> '문자열' - 0 // NaN = Number('문자열') - 0
> '3' - 0 // 3 = Number('3') - 0
> '3월' - 0 // NaN = Number('3월') - 0
프로그래밍에서 자료형을 다른 형태로 변경하는 것
JS는 동적으로 작성된 언어(dynamically typed language
<참고>
| 우선순위(우선순위 높은 순서대로) | 연산자(,로 구분) |
|---|---|
| 20 | () 그룹화 |
| 19 | . , [] , new , () 함수호출 |
| 18 | new 인수없이 |
| 17 | ++ 후위 , -- 후위 |
| 16 | ! , ~, + 단항 , ++ 전위 , typeof , void , delete , await |
| 15 | ** |
| 14 | * , / , % |
| 13 | + 다항, - 다항 |
| 12 | <<, >>, >>> |
| 11 | <, <=, >, >=, in, instanceof |
| 10 | ==, !=, ===, !== |
| 9 | & |
| 8 | ^ |
| 7 | ` |
| 6 | && |
| 5 | ` |
| 4 | ? : 삼항연산자 |
| 3 | = , +=, -=, **= , *= , /= , %= , <<= , >>= , >>>= , &= , ^= , ` |
| 2 | yield , yield* |
| 1 | , 쉼표 |
컴퓨터는 0과 1로 된 데이터만을 읽고 해석할 수 있기 때문에 2의 배수로 나눈 것들은 계산을 잘함
하지만 2진수로 나타내기 어려운 애들은 미세하게 값이 달라짐
> 0.1+0.2 // 0.30000000000000004
> 0.3-0.1 // 0.19999999999999998
> (0.3 * 10 - 0.1 * 10) / 10 // 0.2