참고영상: 드림코딩 - 자바스크립트 기초 강의
값이 중간에 바뀌는게 아니라면 웬만해선 const를 추천!
console.log('my' + 'cats')
console.log('1' + 2)
console.log(`string literals: 1 + 2 = ${1+2}`)
console.log(1 + 1)
console.log(1 - 1)
console.log(1 / 1)
console.log(1 * 1)
console.log(5 % 2)
console.log(2 ** 3) // 2의 3제곱
let counter = 2
const preIncrement = ++counter
// counter = counter+1
// preIncrement = counter
const postIncrement = counter++
// postIncrement = counter
// counter = counter+1
++변수
는 +1을 해준 다음에 다른 변수에 할당변수++
는 다른 변수에 할당한 다음 +1 --도 마찬가지
let x = 3
let y = 6
x += y
x -= y
x *= y
x /= y
작고, 작거나 같고, 크고, 크거나 같고...
이미 잘 아는 내용이니까 패스
const value1 = false
const value2 = 4<2
console.log(`or: ${value1 || value2 || check()}`)
function check(){
for(let i=0; i<10; i++){
console.log('🙋🏻♀️')
}
return true
}
or
은 하나라도 true이면 true이다.
위 코드에서 check()이 true로 반환되므로, value1, value2가 false여도 true라고 출력된다.
※ or
은 앞에서 true가 되면 뒤에있는 조건은 생각않고 true대로 행동한다.
const value1 = true
const value2 = 4<2
console.log(`or: ${value1 || value2 || check()}`)
function check(){
for(let i=0; i<10; i++){
console.log('🙋🏻♀️')
}
return true
}
value1이 true라면,
check()은 작동하지 않는다.
value1만 보고 check()은 무시했기 때문이다.
연산이 많이 되는 함수를 호출하거나 시간을 많이 잡아먹는 함수를 맨 앞에 둔다면?
const value1 = true
const value2 = 4<2
console.log(`or: ${check() || value2 || value1}`)
function check(){
for(let i=0; i<10; i++){
console.log('🙋🏻♀️')
}
return true
}
이러면 시간이 많이 드는 비효율적인 코드가 된다.
따라서, 논리연산자는 비교적 간단한 것들을 앞에 두고, 그 간단한 애들이 다 false 일때만 마지막에 마지못해 돌려야 하는 애들을 호출하는 것이 좋다.
const value1 = false
const value2 = 4<2
console.log(`and: ${value1 && value2 && check()}`)
function check(){
for(let i=0; i<10; i++){
console.log('🙋🏻♀️')
}
return true
}
and
는 모두 true일때 동작한다.
따라서 value1이 false라면 게임 끝났다.
무조건 작동 안한다.
고로 and
도 시간이 많이 드는 연산을 제일 마지막에 적는 것이 좋다.
if (nullableObject != null){
nullableObject.something
}
값을 반대로 바꿔줌
const value1 = true
console.log(!value1)
true 값을 false로 바꿔서 출력되었다.
const stringFive = '5'
const numberFive = 5
console.log(stringFive == numberFive)
console.log(stringFive != numberFive)
console.log(stringFive === numberFive)
console.log(stringFive !== numberFive)
웬만하면 strict equality를 사용하는 것이 좋음!
const kim1 = {name: 'kim'}
const kim2 = {name: 'kim'}
const kim3 = kim1
console.log(kim1 == kim2)
console.log(kim1 === kim2)
console.log(kim1 === kim3)
console.log(0 == false)
console.log(0 === false)
console.log('' == false)
console.log('' === false)
console.log(null == undefined)
console.log(null === undefined)
const name = 'kim'
if(name === 'kim'){
console.log("What's up kim!")
} else if(name === 'yang'){
console.log("Hi yang")
} else {
console.log('unknown')
}
if 안에 있는 조건이 true일때만 실행
const name = 'kim'
console.log(name === 'kim' ? 'yes' : 'no')
조건문이 참이면 왼쪽, 거짓이면 오른쪽을 반환한다.
📍 단, 간단하게 쓸때만 쓰는것이 좋다.
(뒤에다 묶고 묶고... 하면 가독성 떨어짐)
const browser = 'IE'
switch(browser){
case 'IE':
console.log('go away!')
break
case 'Chrome':
console.log('love you!')
break
case 'Firefox':
console.log('love you!')
break
default:
console.log('same all!')
break
}
근데 지금 브라우저가 크롬이랑 파이어폭스면 같은 값을 출력한다.
따라서 다음과 같이 바꾸는 것이 더 좋을 것 같다.
const browser = 'IE'
switch(browser){
case 'IE':
console.log('go away!')
break
case 'Chrome':
case 'Firefox':
console.log('love you!')
break
default:
console.log('same all!')
break
}
let i = 3
while(i>0){
console.log(`while: ${i}`)
i--
}
while에 걸어준 조건이 끝날때까지 반복
do {
console.log(`do while: ${i}`)
i--
} while (i > 0)
do
안에 있는 내용을 먼저 시작while
안에 있는 조건에 맞는지 확인현재 i
는 while문에 따라 0이 된 상태이다. 그러나 do를 실행하기 때문에 do while
이 출력이 된다.
그 후, i가 while의 조건에 맞는지 아닌지 확인하게 되고 -> 안맞으니까 멈춤.
do while
: 블럭 안의 내용을 먼저 실행하고 싶을 때while
: 조건에 맞을때만 실행시키고 싶을 때let i;
for (i = 3; i > 0; i--) {
console.log(`for: ${i}`)
}
for(시작; 조건; 스텝)
에 맞게 작성
for문 안에서 변수 선언하는 것도 가능 !
for (let i = 3; i > 0; i = i - 2) {
console.log(`inline variable for: ${i}`)
}
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
console.log(`i: ${i}, j: ${j}`)
}
}
그러나 O(n²)시간이 걸리므로 좋지 않음.
break
: 중간에 반복문을 끝냄continue
: 지금꺼만 skip하고 다음꺼를 진행는 식으로 무시하기ex. 0부터 10까지 continue
를 사용하여 짝수만 출력하기
for (let i = 0; i < 11; i++) {
if (i % 2 !== 0) continue
console.log(i)
}
ex. 0부터 10까지 반복하되 break
를 사용하여 8까지만 출력하기
for (let i = 0; i < 11; i++) {
if (i > 8) break
console.log(i)
}
끝!
대체로 알고있는 내용이었지만 잘 몰랐던 부분도 조금씩 있었다.
조금 배운 내용을 알겠다며 넘어가고 어떻게든 진도를 나가는 것보다는 기초와 기본을 탄탄하게 잡고 다양한 응용도 겸하면서 천천히 나아가는게 좋은 것 같다.