티스토리 뷰
1번 문제!
let first = 1; // 2 나의 예상 first === 1
let second = first++; // 1 나의 예상 second === 2
let firstNext = 12; //13 나의 예상 firstNext === 12
let secondNext = ++firstNext; //13 나의 예상 secondNext === 13
위의 2개의 항목에 따라 값이 달라진다.
우선 난 전위 연산자가 되는지도 몰랐다.
또한 두개의 값또한 다르게 생각했다.
왜 나는 틀렸는가?
난 기존의 할당된 개념은 바뀌지 않을 거라 생각했다.
second, secondNext 녀석들은 first, firstNext의 증감만을 고려했는데 값이 전혀 예상과 달랐다.
2.문제 해결실마리 찾음
콘솔창을 열어
let a = 8;
a++
a // a++을 친순간은 8이 출력되었고
이후에
a를 호출하였는데 9가 되었다.
let b = 8;
++b // ++b를 친순간에 9가 나오고
b b는 9였다.
3. 분석
let first = 1;
let second = first++;
위에것을 분석해보자면 2 줄이 완성되었기 때문에 first는 연산자의 적용을 받아 값이 상승 되어서 2가 된다.
second의 경우 선언한 first에 후위 연산자가 적용이 되었기 되면에 값 상승이 나중에 이루어져서 first를 그대로 따르게 된다.
4.결론!
빠른 값상승 적용을 원하면 전위연산자로 적용하고
변수에 변수를 할당하는 것은 좀 복잡해질수 있으므로 주의 한다.
'[JS] > [JS] 오류노트' 카테고리의 다른 글
[JS] .join() 메소드 틀린것 (0) | 2021.07.30 |
---|---|
[JS] 할당 자리,순서 유의 (0) | 2021.07.20 |
[JS] While 실수 한것 (0) | 2021.06.17 |
[JS] 오류 if ,else if, else (0) | 2021.06.15 |
- Total
- Today
- Yesterday
- 배열
- ORA-00984
- 변수
- html5
- 앞뒤 공백 제거
- 907
- js
- vsCode
- meta 속성
- javascript
- 호이스팅
- rdt
- null
- CSS
- 코딩
- JSX
- PYTHON
- reserved words
- java
- 박스 모델
- HTML
- ternary operator
- Primitive Data Type
- 바꾸는 법
- 파이썬
- 28000
- Box Model
- sql
- ora-00907
- 별칭
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |