[DAY25]_개발일지: 자바스크립트_연산자와 조건문

hanseungjune·2022년 6월 8일
0

DaeguFE

목록 보기
30/48

✅ 배열 겉핥기 및 연산자

☑️ 문자열 = 배열(?)

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번째값결과값
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

console.log(true && true)
'true'

console.log(true && false)
'false'

console.log(false && true)
'false'

console.log(false && false)
'false'

&& 인 경우(or)

1번째값2번째값결과값
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

☑️ NOT 연산자

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'

>, < 등올 비교하는 것을 비교 연산자라고 하며, 값은 truefalse 로 반환한다.

💯 && 연산자는 || 연산자 보다 우선순위가 높다

console.log(a && b || c && d = (a && b) || (c && d))
'true'

✅ Const, let, var

☑️ var

함수 내에서 선언된 변수는 함수 내에서만 유효하며 함수 외부에서는 참조할 수 없다. 즉, 함수 내부에서 선언한 변수는 지역 변수이며 함수 외부에서 선언한 변수는 모두 전역 변수이다.

호이스팅이 되기 때문에 함수 안에서 선언을 제외하고는 전역변수로 사용할 수 있다 ( 에러 발생률 높음 )

☑️ let & const

모든 코드 블록(함수, 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을 해준다.

✅ 조건문

☑️ if, else if, else 조건문

<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>

조건이 하나라면 ifelse 만 사용

조건이 둘 이상이라면 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>

해당 중첩 및 복합 삼항연산자의 형태도 유념할 것

☑️ else 없이 if만 사용한다면?

<script>
  const date = new Date();
  const hours = date.getHours();

  if ( hours < 12 ) {
    console.log(`현재시간은 ${hours}시 입니다. 현재는 오전이죠.`);
  }
  if ( hours > 12 ) {
    console.log(`현재시간은 ${hours}시 입니다. 현재는 오후이죠.`);
  }
</script>

☑️ if문 중첩!

    1. 중첩하여 표현
<script>
  const date = new Date();
  const hours = date.getHours();

  if(hours < 11 ) {
    console.log(`아침식사 시간!`)
  }
  else {
    if ( hours <= 17 ) {
      console.log(`점심식사 시간!`);
    }
    else {
      console.log(`저녁식사 시간!`);
    }
  }
</script>
    1. 중첩없이 표현
<script>
  const date = new Date();
  const hours = date.getHours();

  if ( hours < 11 ) {
    console.log(`아침식사 시간!`)
  }
  else if ( hours <= 17 ) {
    console.log(`점심식사 시간!`);
  }
  else {
    console.log(`저녁식사 시간!`);
  }
</script>

둘 다 출력값은 동일하다. 그래서 보통 중첩을 안하는게 국룰!

☑️ Switch 조건문

<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를 통해서 결과값을 보여줌.

profile
필요하다면 공부하는 개발자, 한승준

0개의 댓글