0817 <JavaScript Deep Dive> 스터디

dev_sang·2022년 9월 5일
0

STUDY

목록 보기
1/2

1. 아래 코드의 콘솔 출력 결과를 예측하고 그 이유를 설명해주세요 - 종한

const score = x = 100;
console.log(score); // 100

100이 score에 할당이 된다.

const score = x = 100;
console.log(score); // 100 출력

// 표현식인 문은 값처럼 사용할 수 있기 때문이다
// x = 100 할당문은 표현식이기 때문에 할당한 값(100) 으로 평가되고 score 에는 100이 할당된다

2. 데이터 타입의 필요성에 대해 간략한 이유를 말해주세요 - 형석

  • [모범 답안]
    • 값을 저장할 때 확보 해야하는 메모리 공간의 크기를 결정하기 위해
    • 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
    • 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해

3. 콘솔 출력 1번과 2번은 값이 다르게 출력됩니다. 어떤 출력 값이 나오는 지와 다른 값이 나오는 이유에 대해 설명해주세요. - 상지

*console*.log(score); // 1

var score = 100;

console.log(score); // 2
  • [모범답안]
    console.log(score); // undefined
    
    var score = 100;
    
    console.log(score); // 100
    변수 선언은 런타임 이전에 먼저 실행되고 값의 할당은 런타임 이후에 실행됩니다. 자바스크립트 엔진은 소스코드 평과 과정에서 변수 선언을 포함한 모든 선언문을 먼저 실행합니다. 따라서 var score; 변수 선언을 먼저 실행하고 이때 undefined를 할당하여 초기화 합니다.t 그래서 변수 선언문 상단에 해당 변수를 참조하면 undefined가 출력이 됩니다 이때 변수 선언문이 소스 코드 하단에 있더라도 이 변수를 어디서든 참조할 수 있는 것을 호이스팅이라고 합니다. 변수 선언문과 값을 할당하는 코드 아래의 console출력에서는 값이 할당된 이후이므로 100이 출력됩니다.

4. 증가/감소(++/—) 연산자 위치의 의미를 설명해주세요. - 은빈

  • 힌트
    var x = 5, result;
    
    result = x++;
    console.log(result, x) // 5 6
    
    result = ++x;
    console.log(result, x) // 7 7
  • [모범답안 p. 76 예제 07-04] **전위연산자**

    피연산자 앞에 위치한 전위 증가/감소 연산자는 먼저 피연산자의 값을 증가/감소 시킨 후, 다른 연산을 수행한다.

    **후위연산자**

    피연산자 뒤에 위치한 후위 증가/감소 연산자는 먼저 다른 연산을 수행한 후, 피연산자의 값을 증가/감소시킨다.

  • <참고> return ++this.size; → +1 후 리턴 전위 : ++x 후위 : x++
    //전위
    var x = 5, result;
    
    //x를 증가 시킨뒤 그 결과를 result에 할당
    result = ++x;
    console.log(result,x) //7 7
    //후위
    var x = 5, result;
    
    //x의 값을 result에 할당한뒤 x값을 증가
    result = ++x;
    console.log(result,x) //5 6

5. var와 let/const 의 호이스팅 발생시 차이점을 설명해주세요. - 지선

호이스팅 -변수를 참조하는 구문이 변수 선언 구문보다 앞에 있음에도 에러가 발생하지 않는 것

발생시

var - 성공적으로 호이스팅 작동한다

let /const - 호이스팅이 안되고 레퍼런스 에러가 발생한다

  • [ 모범 답안 ] var는 호이스팅이 발생하면, 선언과 초기화가 거의 동시에 이루어집니다. 그래서 실행 시점의 스코프 상단에서 해당 변수에 대한 메모리가 살아있기 때문에 선언부 위치에 상관없이 참조, 할당이 가능합니다. let, const는 호이스팅이 발생하면, 선언만 이루어지고 실행 시점에서 실질적인 선언부를 만날 때까지 초기화는 이루어지지 않습니다. 이 간극만큼 해당 변수에 대한 메모리는 존재하지 않기 때문에 선언부 상단에서 참조, 할당이 불가능합니다.

p.43 4.4참고.

6. 부동소수점이란?/변수 선언 없이 식별자 접근한다면 어떤일이 발생하나요?-형빈

부동소수점이란?-컴퓨터에서 실수를 표시하는 방법으로, 소수점의 위치를 고정시키지 않으며 가수와 지수를 사용하여 실수를 표현한다. 가수는 유효숫자를 나타내며 지수는 소수점의 위치를 나타낸다.

p.41참고

변수 선언 없이 식별자 접근한다면 어떤일이 발생하나요?-ReferenrceError발생한다. 이것은 식별자를 통해 값을 참조하려 했지만 자바스크립트 엔진이 등록된 식별자를 찾을 수 없을때 발생하는 에러.

ISSUES

질문) TS는 동적 타입 언어인가 정적 타입 언어인가

Why Static Typing & Why is TypeScript so popular?

TypeScript - Typing | PoiemaWeb

profile
There is no reason for not trying.

0개의 댓글