카테고리 없음

실습과제

하로이 2022. 9. 23. 20:03

콘솔에 찍힐 b 값을 예상해보고, 어디에서 선언된 “b”가 몇번째 라인에서 호출한 console.log에 찍혔는지, 왜 그런지 설명해보세요. 주석을 풀어보고 오류가 난다면 왜 오류가 나는 지 설명하고 오류를 수정해보세요.

 

let b = 1; // b에 1이라는 값이 주어졌다.

function hi () {   //함수 hi는  const a=1; , let b = 100;  b++이라는 매개 변수를 가집니다. 즉 값으로 함수에 전달됩니다.

const a = 1;  // let 상수는 키워드 를 사용하여 선언된 변수와 마찬가지로 블록 범위 입니다.
                       상수 값은 재할당을 통해(즉, 대입 연산자를 사용하여 ) 변경할 수 없으며, 다시 선언할 수 없습니다.

let b = 100;  // 하지만 b에 이미 1이라는 값을 선언하였기에 b는 아직 1이다.

b++; // let을 사용하지 않은 b 객체로 후위 증가 연산자가  사용되므로 (1씩 증가) b를 증가를 시켜 function 밖에 있는  b는 101이 되었다.

console.log(a,b);  // 1  (function안의  b는 불변된  1의 값을 가지고 있기 때문에 아직 b는 1이고 a도 1이기 때문에 둘다 1을 찍어준다. )

}

//console.log(a);   // const 변수를 function블록 내부에서 선언했다면, 해당 선언된 블록 내부에서만 접근이 가능하며, 블록 이외의 영역에서는 접근할 수 없다. 접근 시 아래와 같은 에러가 발생한다.

console.log(b);   // 1 101 ( b의 값은 function 바깥쪽이랑 안쪽 두개 다 값을 가져와서 그런거 같다.)

hi();

console.log(b);  1 (hi라는 함수의 b를 소환하여 1이 됨)

 

두 값이 다른 이유를 설명해 보세요

 

1 == "1"; // 숫자 1이랑 문자로된 1이지만 ==의 경우에는 1이 맞기 때문에 true로 표시해준다.
1 === "1"; // 하지만 === 연산자는 타입을 변환하지 않으므로 == 연산자에 비해 비교하는 방식이 엄격하므로 숫자와 문자의 차이가 있어 false로 표시해준다.