본문 바로가기
GDSC/JS

[JS] 1장과 2장 문제 및 질문 정리

by 킴도비 2022. 5. 2.

✅ 1장 문제

 

1번. 노드에서 kim.js를 실행하려면 어떤 명령어를 사용해야 할까요? (형식 : $ ____  kim.js) _바에 들어갈 내용만 작성해주세요.

  • 정답 : 아래에
더보기

node

 

2번. 자바스크립트 변수에는 타입이 있다 없다?

  • 정답 : 아래에
더보기

없다.

 

3번. 자바스크립트란?

  • 정답 : 아래에
더보기

웹의 프로그래밍 언어

또는

객체 지향, 함수형 프로그래밍 스타일에 적합한 고수준의 동적인 인터프리터 언어

 


❗ 추가로 들어온 질문

📝 2번 문제에 대한 질문 : 변수에 대한 타입이 있는지 없는지에 대한 질문이 들어옴.

  • 질문에 대한 답변
  • 자바 스크립트는 런타임 때 타입을 정의한다.
  • 변수 타입이 있다 없다(는 동적인 언어의 특징이다)
 

Data type & Variable | PoiemaWeb

변수는 값의 위치(주소)를 기억하는 저장소이다. 값의 위치란 값이 위치하고 있는 메모리 상의 주소(address)를 의미한다. 즉, 변수란 값이 위치하고 있는 메모리 주소(Memory address)에 접근하기 위해

poiemaweb.com

🙋‍♀️ 블로그 요약본 🙋‍♂️

• 프로그래밍은 변수를 통해 값을 저장하고 참조한다.
변수값의 위치(주소)를 기억하는 저장소이며. 값의 위치값이 위치하고 있는 메모리 상의 주소(address)를 의미힌다.
• 즉, 변수란 값이 위치하고 있는 메모리 주소(Memory address)에 접근하기 위해 사람이 이해할 수 있는 언어로 명명한 식별자(identifier)이다.

변수 선언과 할당의 구조

메모리에 값을 저장하기 위해서는 먼저 메모리 공간을 확보해야 할 메모리의 크기(byte)를 알아야한다. 이는 값의 종류에 따라 확보해야 할 메모리의 크기가 다르기 때문이다. 이때 값의 종류, 즉 데이터의 종류데이터 타입(Data Type)이라 한다.
정적 타입(Static/Strong Type) 언어 : C나 Java와 같은 C-family 언어이며, 변수 선언시 변수에 저장할 값의 종류를 사전에 타입 지정(Type annotation) 해줘야 한다.

동적 타입(Dynamic/Weak Type) 언어 : 자바스크립트. 변수의 타입 지정(Type annotation) 없이 값이 할당되는 과정에서 자동으로 변수의 타입이 결정(타입 추론, Type Inference)가 된다. 즉, 변수는 고정된 타입이 없다. 따라서 같은 변수에 여러 타입의 값을 자유롭게 할당할 수 있다.

데이터 타입(Data Type) :
프로그래밍 언어에서 사용할 수 있는 데이터(숫자, 문자열, 불리언 등)의 종류. 데이터를 메모리에 저장할 때 확보해야 하는 메모리 공간의 크기와 할당할 수 있는 유효한 값에 대한 정보, 그리고 메모리에 저장되어 있는 2진수 데이터를 어떻게 해석할 지에 대한 정보를 컴퓨터와 개발자에게 제공한다.

 

📕 책에 대한 질문 : Undefined가 어디에 사용되는지 궁금하다

  • 참고 블로그 링크(위와 동일한 페이지에 내용 존재)
  • undefined의 타입의 값undefined이며, 선언은 되어있지만 값이 할당되어 있지 않은 변수가 undefined의 값을 가진다.
  • 변수 선언에 의해 확보된 메모리 공간을 처음 할당이 이루어질 때까지 빈상태(대부분 비어있지 않고 쓰레기 값(Garbage value)이 들어있다)로 내버려두지 않고 자바스크립트 엔진이 undefined로 초기화한다.
  • undefined는 자바스크립트 엔진이 할당해주는 값이고, 개발자는 마음대로 할당하는 것을 권장하지 않는다.

💡 추가로 배운 내용

🤣 재밌는 실험 결과 : 만약 자바 스크립트에  "b"+"a"+ +"n"+"a" 문장을 입력하면 결과가 어떻게 될까 ?

  • 아래에 결과!

 

  • 숫자로서 읽을 수 없음 (parseInt("어쩌구"), Number(undefined))
  • 결과가 허수인 수학 계산식 (Math.sqrt(-1))
  • 피연산자가 NaN (7 ** NaN)
  • 정의할 수 없는 계산식 (0 * Infinity)
  • 문자열을 포함하면서 덧셈이 아닌 계산식 ("가" / 3)
  • 그래서 위 내용을 기반으로 과정을 살펴 보면
  • + +"n" 연산에서 NaN이 반환됩니다. 즉, +"n" = NaN가 됩니다.

 

🙋‍♀️ 그 외 배운 내용

  • 동적언어 : 실행해보기 전에 에러가 있는지 모름  => 타입스크립트를 사용
  • 프로그래밍 린트 - 형식 지정 -> 타입스크립트
  • 린트란? 소스 코드를 분석하여 프로그램 오류, 버그, 스타일 오류, 의심스러운 구조체에 표시(flag)를 달아 놓기 위한 도구들을 가르킨다.
  • ; 생략

'GDSC > JS' 카테고리의 다른 글

[JS] 서문 및 참고 내용 정리본  (0) 2022.04.26