alert와 console.log은 자바스크립트에서 이미 정의된, 약속된 단어이다.
이렇게 약속된 단어들은 '약속어(Reserved Words)'라고도 불린다.
alert 라는 이름의 함수가 이미 존재하는 것이므로 함부로 같은 이름의 함수를 또 만들면 안된다!
변수 이름을 정할 때 주의할 점
변수의 사용
변수에는 값을 저장할 수 있습니다. 수정 또한 물론 가능합니다.
값을 수정할 때는 변수 앞에 let 키워드를 사용하지 않습니다.
let 키워드는 변수를 새로 생성할 때만 사용되기 때문입니다.
값을 수정할 때 쓰는 문법
**이미 선언해둔 변수명 = 새로운 값;**
만약 아래와 같이 코딩한다면, name이라는 변수의 값을 변경한 것이 아니라 name이라는 변수를 두 번 생성한 것입니다. 이처럼 같은 변수의 이름을 중복해서 쓰면 에러가 날 것이다.
let name = "김개발";
let name = "김코딩";
변수 값(value)는 얼마든지 중복되어도 된다.
모든 함수는 반환(return)을 한다. return 명령어를 쓰지 않은 상태에서도 기본적으로 undefined를 반환하는 것이 그런 이유이다.
함수에서 반환된 결과값을 변수에 저장할 수도 있고, 다른 로직에 다시 사용할 수도 있다.
const checkAge = function UnderAge (age) {
if(age =< 20) {
return "Banned to drink";
}
}
console.log(checkAge);
let num = 1;
let newNum = num++;
console.log(num); // 2 출력
console.log(newNum); // 1 출력
위의 예시에서 newNum 에 2가 올것이라고 예상했는데 왜 1이 왔을까?
앞에서부터 차례대로 스크립트가 실행되었기 때문이다.
위의 것을 풀어서 쓴다면, 아래와 같을 것이다.
let num = 1;
let newNum = num;
num++;
그게 아니라 newNum 에다가 2를 정말 할당하고 싶다면,
**let newNum = ++num;**
이렇게 써야한다. 그렇게 해야 num 을 newNum에 할당하기 전에 +1 이 되고 그 다음에 newNum이 2가 될것이기 때문이다.
실제로 우리가 쓰는 수학식과 같은 순서로 계산된다.
console.log(3 + 6 * 2); // 15
console.log((3 + 6) * 2); // 18
if (answer > 5) {
alert("15보다 큰 숫자!");
} else if (answer > 10) {
alert("10보다 큰 숫자!");
} else if (answer > 5) {
alert("5보다 큰 숫자!");
} else {
alert("5보다 작거나 같은 숫자!");
}
else if 는 맨 처음에 if 안의 A 조건을 실행하고, A 맞아? 아니면~ B 맞아? 그것도 아니면~ C 맞아? 이런식으로 계속 가는 것이다. else if 의 조건 중에서 맞는 조건이 있으면 그 조건에서 return 해서 나가고 그렇지 않으면 else 까지 가서 else 안에 있는 내용이 실행된다.
e.g. 1 - else if 문의 예시
function myFavoriteColor(color) {
if (color === "navy") {
return "Good!";
} else if (color === "yellow") {
return "Bad!";
} else {
return "Whatever!";
}
}
myFavoriteColor("green");
위의 예시에서 처음에 myFavoriteColor(green);
를 실행했는데, 에러가 났다.
다시보니 color
parameter 가 데이터값이 string인, color 이름들과 비교를 하는 것이기 때문에 parameter color 로 string 을 넣어줘야할 것 같아서 "green"
으로 수정했더니 작동했다.
===
는 엄격한(identity/strict) 비교연산자 이고,
==
는 느슨한 비교연산자 입니다.
위의 예시에서 내가 green을 넣었을 때 string이 아니므로 에러가 났었던 것처럼 ===는 엄격한 비교 연산자이다. 하지만 ==는 느슨하기 때문에 아래의 예시에서 If 내용을 리턴한다.
if ("3" == 3) {
return true;
}