[TIL][JavaScript] JavaScript는 어떤 언어인가요?

2023. 12. 30. 03:54· 공부기록/JavaScript
목차
  1. 자바스크립트는 무슨 언어인가요?
  2. 프로토타입Prototype에 대해 설명해주세요.
  3. 자바스크립트가 동적 언어인 이유가 무엇인가요?
  4. + 타입스크립트
  5. 단일 스레드란 무슨 뜻인가요?
  6. Node.js에 대해 아는대로 설명해주세요.
  7. chrome v8 engine
  8. 명령형 스타일과 선언형 스타일은 무엇이죠?
  9. 객체지향 프로그래밍은 무엇인가요?
  10. 자바스크립트가 일급 함수(first-class functions)를 지원한다는 것이 무슨 뜻인가요? 
  11. 질문 reference + 기타

면접 대비 겸 javascript의 기본적인 지식 학습 및 암기. 자료는 최대한 공식 문서에서 가져오려 노력함.

 

자바스크립트는 무슨 언어인가요?

(easy) 웹 페이지에서 복잡하고 동적인 기능을 구현할 수 있는 스크립트 언어 또는 프로그래밍 언어입니다. 

(prof)

1) 인터프리터 혹은 just in time 컴파일 프로그래밍 언어로 프로토타입 기반의 단일 스레드 동적 언어입니다.

2) 웹 페이지를 위한 스크립트 언어이지만, Node.js 등을 이용하여 비 브라우저 환경에서도 사용할 수 있습니다. 

3) 객체지향, 명령헝, 선언형(함수형 프로그래밍 등) 스타일과 일급 함수를 지원합니다. 

ref.

https://developer.mozilla.org/ko/docs/Learn/JavaScript/First_steps/What_is_JavaScript

https://developer.mozilla.org/ko/docs/Web/JavaScript

 

프로토타입Prototype에 대해 설명해주세요.

프로로토타입은 javascript 의 모든 객체가 가지고 있는 객체로, js의 모든 객체들이 메소드와 속성을 상속 받기 위한 탬플릿입니다. 프로토타입 객체도 상위 프로로타입 객체로부터 메소드와 속성을 상속 받을 수 있고, 이는 중첩되어 일어날 수 있습니다. 이를 프로로타입 체인이라고 부르며, 다른 객체에 정의된 메소드와 속성을 한 객체에서 사용할 수 있는 근간이 됩니다. 상속되는 메소드와 속성은 각 객체가 아닌, 객체의 생성자의 prototype이라는 속성에 정의 되어 있습니다. 

ref.

https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/Object_prototypes

설명이 좋은 글: https://medium.com/@bluesh55/javascript-prototype-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-f8e67c286b67

 

자바스크립트가 동적 언어인 이유가 무엇인가요?

자바스크립트는 유연한 타입 시스템을 제공하기 때문에 동적 언어로 분류됩니다. 동적 언어는 변수의 타입이 런타임 시간(프로그램 실행)동안 결정되며, 같은 변수에 다른 타입의 값을 할당할 수 있습니다. 또한 자바스크립트는 암묵적으로 타입 변환을 수행 할 수 있습니다. 예를 들어, 숫자와 문자열을 더하면 결과가 문자열로 변환됩니다(타입 코어션).

 

+ 타입스크립트

이러한 유연성은 빠른 개발에 유용하지만, 코드가 방대해짐에 따라 타입 관련 버그를 야기할 수 있습니다. 이러한 문제를 해결하기 위해 타입스크립트가 개발되었습니다. 타입스크립트는 자바스크립트에 기반을 두고 있지만, 컴파일 시간에 타입 검사를 통해 안정성을 높여줍니다. 또한, 인터페이스나 제네릭 같은 고급 기능을 제공하여 더욱 강력한 코드 작성을 가능하게 합니다.

 

* 에러 사전 방지 및 코드 가이드(자동 완성)

ref

[TIL][CS기초] Compile | Compiler, Interpreter | Type System | Typing :: Static & Dynamic

https://www.typescriptlang.org/why-create-typescript

왜-타입스크립트를-써야할까요

 

단일 스레드란 무슨 뜻인가요?

자바스크립트가 단일 스레드 언어라는 말은 자바스크립트 엔진이 한 번에 하나의 작업만을 처리할 수 있음을 의미합니다.  하나의 프로세스인 자바스크립트 엔진 위에 스레드 하나만 존재하기에, (call) stack이 단 한 개 존재하며 문맥 교환이 필요하지 않습니다. 따라서 단순 CPU를 사용할 때에는 멀티 스레드보다 더 효율적일 수 있습니다.

 

>> event loop, 비동기 처리까지 질문이 이어질 수 있음. (다음 포스트에 작성)

>> 콜 스택과 힙에 대한 질문까지 이어질 수 있음. (다음 포스트에 함께 작성)

더보기

[ + ] single thread/multi threads | 프로세스, 스레드 | memory structure: stack and heap

 

프로세스: 메모리 상에서의 작업의 단위

스레드: 할당 받은 자원을 사용하는 실행의 단위

공룡 책, 싱글 스레드와 멀티 스레드
스택과 힙

 

ref

https://developer.mozilla.org/ko/docs/Glossary/Thread

my post: https://develop-dbd.tistory.com/120, 

https://en.wikipedia.org/wiki/Stack-based_memory_allocation

https://codedamn.com/news/javascript/memory-management-complete-guide

 

Node.js에 대해 아는대로 설명해주세요.

자바스크립트를 비 브라우저 환경에서 실행시킬 수 있는 오픈 소스 크로스 플랫폼 자바스크립트 실행창(런타임) 입니다. chrome v8 javascript engine으로 빌드되었습니다. 웹 서버, 웹 앱 등을 자바스크립트로 개발할 수 있게 해줍니다.  

 

Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.

 

chrome v8 engine

c++로 작성된 구글의 오픈 소스 자바스크립트와 웹 어셈블리 엔진입니다.

javascript를 bytecode로 생성하고, 이 바이트코드를 기계어로 컴파일한 뒤 실행하는 JIT 컴파일 방식을 사용합니다.

google chrome과 안드로이드 브라우저에 탑재되어 있습니다. 

ref

https://nodejs.org/en

https://v8.dev/

V8_(JavaScript_engine)

 

명령형 스타일과 선언형 스타일은 무엇이죠?

명령형 프로그래밍(Imperative Programming)은 프로그램이 어떻게 실행될지 기술하는 스타일입니다. 풀어쓰는 스타일이라고 볼 수 있습니다. 반대로 선언형 스타일 프로그래밍(Declarative Programming)은 프로그램이 무엇을 실행할지 기술하는 스타일입니다. 컴팩트하게 쓰는 스타일로 볼 수 있습니다.

자바스크립트에서의 각 스타일 차이 예시(링크드인)

ref

https://www.geeksforgeeks.org/difference-between-imperative-and-declarative-programming/ (이미지 소스 출처)

https://www.ionos.com/digitalguide/websites/web-development/declarative-programming/

Declarative vs. Imperative Programming: 4 Key Differences (차후 심도 포스트 필요)

Imperative vs Declarative Programming in JavaScript (이미지 소스 출처)

 

객체지향 프로그래밍은 무엇인가요?

명령형 프로그래밍에 속하는 프로그램 설계방법론의 일종입니다. 프로그램을 수많은 객체라는 기본 단위로 나누고, 이 여러 객체들을 조립해서 하나의 완성된 프로그램을 만드는 방법론입니다. 자바스크립트에서는 프로토타입 객체지향을 사용합니다. 

자바스크립트가 일급 함수(first-class functions)를 지원한다는 것이 무슨 뜻인가요? 

자바스크립트 함수가 다른 변수처럼 쓰일 수 있다는 뜻입니다. 변수에 값으로 할당할 수 있으며, 다른 함수의 파라미터로 전달될 수 있으며 함수의 결과로 반환될 수 있습니다. 즉, 일급 객체로 취급한다는 뜻입니다. 

이 성질 덕분에 자바스크립트는 어떤 함수가 종료된 뒤 그 뒤에 곧장 실행될 call back 함수를 사용할 수 있습니다. 

ref

https://developer.mozilla.org/ko/docs/Glossary/First-class_Function

https://en.wikipedia.org/wiki/First-class_function

 


 

 

질문 reference + 기타

지금까지 받았던 신입 프론트엔드 면접 질문들

프로토타입 관련: https://www.opentutorials.org/module/4047/24629

JIT 관련 향후 읽어보면 좋을 포스트: Javascript 기초 - JavaScript 개발한다면 JIT은 알아야JIT

 

 

'공부기록 > JavaScript' 카테고리의 다른 글

Debugging Typescript in VScode  (0) 2024.04.05
[TIL][JavaScript][Core] 실행 컨텍스트, 호이스팅, 함수 선언/표현식, 화살표 함수  (0) 2023.12.31
[TIL][JavaScript] JS 기본, ES06 | 데이터 타입  (0) 2023.12.30
[JS] 변수, 데이터 타입  (0) 2022.07.04
  1. 자바스크립트는 무슨 언어인가요?
  2. 프로토타입Prototype에 대해 설명해주세요.
  3. 자바스크립트가 동적 언어인 이유가 무엇인가요?
  4. + 타입스크립트
  5. 단일 스레드란 무슨 뜻인가요?
  6. Node.js에 대해 아는대로 설명해주세요.
  7. chrome v8 engine
  8. 명령형 스타일과 선언형 스타일은 무엇이죠?
  9. 객체지향 프로그래밍은 무엇인가요?
  10. 자바스크립트가 일급 함수(first-class functions)를 지원한다는 것이 무슨 뜻인가요? 
  11. 질문 reference + 기타
'공부기록/JavaScript' 카테고리의 다른 글
  • Debugging Typescript in VScode
  • [TIL][JavaScript][Core] 실행 컨텍스트, 호이스팅, 함수 선언/표현식, 화살표 함수
  • [TIL][JavaScript] JS 기본, ES06 | 데이터 타입
  • [JS] 변수, 데이터 타입
J융
J융
Recording of development
J융
Develop day by day
J융
전체
오늘
어제
  • 분류 전체보기 (67)
    • 공부기록 (63)
      • CS (8)
      • OS (15)
      • Algorithm (19)
      • Web (3)
      • HTML&CSS (6)
      • Electron (1)
      • JavaScript (5)
      • Network (0)
      • C (2)
      • Python (3)
      • Git (1)
    • 개발일기 (3)
      • Alice기록 (0)
      • Krafton Jungle 기록 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 부트캠프
  • JS기초
  • 비전공자개발자
  • #cs기초
  • 정글공부키워드
  • 수강후기
  • cs기초
  • 기술면접대비
  • os
  • fe
  • 앨리스트랙
  • 엘리스AI트랙
  • pintos
  • 크래프톤정글
  • vm
  • CG
  • Web
  • cs지식
  • 알고리즘
  • 개발일기

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
J융
[TIL][JavaScript] JavaScript는 어떤 언어인가요?
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.