console.log("안녕하세요"[0])
→'안'
문자열도 하나의 배열이기 때문에 배열식으로 가져와도 가능하다! ( index: 0 ~ 5 )
console.log("안녕하세요".length)
→5
length
는 문장의 길이!
console.log(5%2)
→'1'
console.log(6%2)
→'0'
%
는 나머지를 구할 때 쓰는 연산자이다! 0 or 1
console.log(12/4)
→'3'
console.log(5/2)
→'2.5'
/
는 몫을 구하는 연산자이다. 정수로만 받고 싶다면,
console.log(Math.round(5/2))
console.log((5/2).toFixed(0))
을 사용하면 반올림을 한 정수로 값이 나온다.
console.log(5*7)
→'35'
*
은 곱셈 연산자
console.log(1 == "1")
→'true'
console.log(1 === "1")
→'false'
==
는 문자의 의미만 맞으면 true
===
는 문자의 형식까지 맞아야 true
console.log(true || true)
→'true'
console.log(true || false)
→'true'
console.log(false || true)
→'true'
console.log(false || false)
→'false'
||
인 경우(or
)
1번째값 | 2번째값 | 결과값 |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
console.log(true && true)
→'true'
console.log(true && false)
→'false'
console.log(false && true)
→'false'
console.log(false && false)
→'false'
&&
인 경우(or
)
1번째값 | 2번째값 | 결과값 |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
console.log(!true)
→'false'
console.log(!false)
→'true'
console.log(99===99)
→'true'
console.log(!(999===999))
→'false'
!
은 NOT
의 의미로 NOT 논리 연산자
라고 한다.
console.log("abc".length > 5)
→'false'
console.log(!("abc".length > 5))
→'true'
>
, <
등올 비교하는 것을 비교 연산자
라고 하며, 값은 true
나 false
로 반환한다.
&&
연산자는 ||
연산자 보다 우선순위가 높다
console.log(a && b || c && d = (a && b) || (c && d))
→'true'
함수 내에서 선언된 변수는 함수 내에서만 유효하며 함수 외부에서는 참조할 수 없다. 즉, 함수 내부에서 선언한 변수는 지역 변수이며 함수 외부에서 선언한 변수는 모두 전역 변수이다.
호이스팅이 되기 때문에 함수 안에서 선언을 제외하고는 전역변수로 사용할 수 있다 ( 에러 발생률 높음 )
모든 코드 블록(함수, if 문, for 문, while 문, try/catch 문 등) 내에서 선언된 변수는 코드 블록 내에서만 유효하며 코드 블록 외부에서는 참조할 수 없다. 즉, 코드 블록 내부에서 선언한 변수는 지역 변수이다.
let은 호이스팅이 되지 않는다. 그래서 선언 후 출력을 해야한다. 재할당은 가능하지만 재선언은 불가능하다.
const도 호이스팅이 되지 않으며, 선언과 값 할당을 동시에 해주어야한다. 그렇지않으면 에러 발생! 보통 const를 많이 사용한다고 한다. ( 아마 에러 발생률이 낮아서 그런듯 )
<script>
console.log(foo) //undefined
var foo;
console.log(bar) // Uncaught ReferenceError: bar is not defined at <anonymous>:4:15
let bar;
</script>
let num = 0;
console.log(++num); // 1
console.log(++num); // 2
먼저 num에 +1을 해주고 콘솔 출력을 해준다.
let num1 = 0;
console.log(num1++); // 0
console.log(num1++); // 1
먼저 콘솔 출력을 해주고 num에 +1을 해준다.
<script>
let name = prompt("성함이 어떻게 되십니까?","홍길동");
let age = Number(prompt("나이가 어떻게 되십니까?","20"));
if ( age <= 13 ) {
console.log(`${name} 님은 나이가 ${age}세이므로 어린이입니다.`);
}
else if( age <= 19 ) {
console.log(`${name} 님은 나이가 ${age}세이므로 청소년입니다.`);
}
else {
console.log(`${name} 님은 나이가 ${age}세이므로 성인입니다.`);
}
</script>
조건이 하나라면
if
와else
만 사용
조건이 둘 이상이라면
if
,else if
,else
모두 사용
<script>
let userHeight = 175;
let ridepossible = (userHeight > 150) ? "어서오세요 환상의 나라 에버랜드입니다~~~" : "고객님 다른 놀이기구를 탑승하셔야 될꺼 같아요 ㅠㅠ 죄송합니다 ㅠㅠ";
console.log(ridepossible);
</script>
삼항연산자의 형태를 잘 파악해두고 필요할때 적재적소로 쓰면 될 거 같다.
<script>
let name = "홍길동";
let grade = 4;
let greeting = (grade <= 2) ? `${name.slice(1,3)}이 안녕? 이번에 MT가야지? ㅎㅎ` :
(grade <= 3) ? `${name.slice(1,3)}오빠 과제 다 하셨어요? ㅠㅠ` :
(grade <= 4) ? `${name.slice(1,3)} 선배님 안녕하십니까! ( 화석이 왜 학교 나오냐... )` :
"누구세요?";
console.log(greeting);
</script>
해당 중첩 및 복합 삼항연산자의 형태도 유념할 것
<script>
const date = new Date();
const hours = date.getHours();
if ( hours < 12 ) {
console.log(`현재시간은 ${hours}시 입니다. 현재는 오전이죠.`);
}
if ( hours > 12 ) {
console.log(`현재시간은 ${hours}시 입니다. 현재는 오후이죠.`);
}
</script>
<script>
const date = new Date();
const hours = date.getHours();
if(hours < 11 ) {
console.log(`아침식사 시간!`)
}
else {
if ( hours <= 17 ) {
console.log(`점심식사 시간!`);
}
else {
console.log(`저녁식사 시간!`);
}
}
</script>
<script>
const date = new Date();
const hours = date.getHours();
if ( hours < 11 ) {
console.log(`아침식사 시간!`)
}
else if ( hours <= 17 ) {
console.log(`점심식사 시간!`);
}
else {
console.log(`저녁식사 시간!`);
}
</script>
둘 다 출력값은 동일하다. 그래서 보통 중첩을 안하는게 국룰!
<script>
let myNumber = 1234;
switch(myNumber%2){
case 0:
console.log(`내가 적은 숫자는 짝수이다.`);
break;
case 1:
console.log(`내가 적은 숫자는 홀수이다.`);
break;
default:
console.log(`대체 뭘 적은거니? 숫자를 적어 숫자!`);
break;
}
</script>
switch(조건)에서 조건의 값에 따라서 케이스를 나누고, 결과값을 출력하는 조건문을 Switch 조건문이라고 한다. 보통은 prompt를 통해서 결과값을 보여줌.