js는 어떻게 동작할까요? -1

김민정·2022년 3월 23일
0
  1. javascript가 무엇입니까? - 대부분의 웹 사이트가 웹 페이지 동작을 위해 클라이언트 측에서 사용하는 인터프리터(스크립트)언어로 브라우저에 내장 되어 있는 자바스크립트 엔진에 의해 읽어내려가며 실행되는 컴퓨터 언어입니다.명령형(imperative),선언형, 함수형(functional), 프로토타입 기반(prototype-based) 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어입니다.

명령형과 선언형이라는 건 무엇입니까?

html, oracle -> 선언형 (
C, C++, Java, Pascal, Ruby -> 명령형 (알고리즘을 이야기할 수 있는 언어)

자바스크립트가 함수형이라는 건 무엇입니까?

반드시 하나 이상의 인자를 받고, 받은 인자를 처리하여 반드시 결과물을 돌려주어야 하며 바꾸고자하는 변수 외에는 바뀌어서는 안 되는 특징을 가진 언어

자바스크립트가 프로토타입 기반 객체지향 프로그래밍이라는 건 무엇입니까?

프로토타입패턴이라는 건 객체를 생성할 때 원본이 되는 객체를 복사해서 생성하는 패턴을 의미합니다. 프로토타입 기반 객체지향 프로그래밍이란 객체를 생성할때 원본이 되는 객체를 복사해서 생성하는 것을 기반으로 추상화, 캡슐화, 상속, 다형성을 이용해 문제를 여러 개의 객체 단위로 나누어 처리하는 방식 프로그래밍이라는 의미

함수형과 객체지향은 다른거라고 하는데 어떻게 다릅니까?

값의 연산 및 결과 도출 중심의 함수형과 객체 중심의 설계가 중요한 객체지향

자바스크립은 왜 함수형과 객체지향 둘다 해당됩니까?

자바스크립트에서 소문자로 시작하는 function을 만들어 사용하는 함수
자바스크립트에서 쓸 수 있는 함수형 프로그래밍 함수들이 있습니다. map, filter와 reduce.

대문자로 시작하는 생성자로 만드는 객체를 사용하는 자바스크립트

인터프리터언어란? 프로그램을 기계 명령어로 컴파일하지 않고 일반적으로 해석되는 프로그래밍 언어

컴파일 하다라는 말은 무엇입니까?

고급 프로그래밍 언어로 만든 프로그램을 실제 컴퓨터에서 실행할 수 있는 기계어, 중간 코드, 또는 다른 프로그래밍 언어로 번역하는 것을 이야기합니다.

고급 프래밍 언어에는 무엇이 있습니까?

c, java, python, c++

기계 명령어로 컴파일 하다라는 말은 무엇입니까?

어떤 언어의 코드를 기계명령어로 바꿔주는 과정을 이야기합니다.

자바스크립트 엔진은 어떻게 생겼습니까?

메모리힙과 콜스택을 가지고 있습니다.

  1. 자바스크립트 - 메모리힙
    -참조타입의 데이터가 저장되는 공간

    참조타입의 데이터란
    ex) 배열과 객체와 함수는 참조타입의 데이터이다. 값이 아니라 주소를 저장함을 의미한다. 주소만 할당한다.

  2. 자바스크립트 - 콜스택
    -원시타입(숫자등)의 데이터가 저장되는 공간

    원시타입의 변수란 데이터 복사가 일어날때 메모리 공간을 새로 확보하여 독립적인 값을 저장하는 변수를 의미한다.
    /
    자바스크립트는 원시타입 변수로 string, number, bigint, boolean, undefined, symbol을 가지고 있다.
    2.원시타입 변수는 변하지 않는다.(기존에 메모리에 생성된 값들은 그 자체가 변경될수 없고 메모리만 교체되어 재할당 된것 처럼 보이는 것이지 재할당되었다고 할 수 없다.

-실행컨텍스트를 통해

실행컨텍스트란 코드의 실행환경을 의미한다.
1) 변수 식별자(이름) 저장,
변수와 식별자
변수 : 변경 가능한 데이터
식별자 : 변수가 되는 어떤 데이터를 식별하는 데 사용하는 이름

var name = '홍길동'

2) 스코프 체인 및 this 관리

1.자바스크립트에서 실행(브라우저가 스크립트를 로딩해서 실행할 때) 할때 전역컨텍스트가 생긴다.
2.전역컨텍스트 생성 이후 함수 호출시마다 컨텍스트가 생긴다.
3.컨텍스트가 생길 때마다 변수객체, 스코프 체인, this가 생긴다

변수객체란?
자바스크립트에서 변수란?
-변경 가능한 데이터
자바스크립트에서 객체란?
-속성으로 이루어진 덩어리

var zero = {
	firstName : 'Zero',
    lastName: 'Cho'}

질문! 여기서는 왜 변수객체라고 이야기했을까?(https://www.zerocho.com/category/JavaScript/post/5741d96d094da4986bc950a0) 도와주세요 ㅠㅠ

스코프 체인이란?
스코프란 범위라는 뜻이다. 자바스크립트는 함수단위로 스코프를 만든다. 함수단위로 만들어진 스코프 즉 영역이 연결되어있음을 보여주는 것이 스코프체인이다

this란?
1.자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기참조변수

자바스크립트에서 인스턴스란
-자바스크립트에서 생성자 함수로 만든 객체
요리책에 의한 감자스프, 감자스프에 의한 감자, 감자에 의한 씨앗

2.자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할 수 있다

자바스크립트의 프로퍼티란
자바스크립트에서 객체내부의 속성을 이야기합니다. (key:value형식으로 필자는 파이썬의 딕셔너리와 굉장히 비슷하다고 느꼈습니다. 자바스크립트와 파이썬의 딕셔너리를 비교한 글을 보았습니다링크텍스트 파이썬도 개념적으로 정리가 되면 글의 내용을 이해할 수 있을 것 같습니다.)

자바스크립트의 메서드란
자바스크립트의 메서드란 인스턴스를 생성할 수 없는 함수객체를 이야기한다

const obj = { 
	f2(){
    console.log("hi")
    }
   }
  1. this는 개발자가 생성하는게 아니라 자바스크립트 엔진에 의해 암묵적으로 생성한다.
    4.코드어디에서든 참조할 수 있지만 객체의 메서드 내부나 생성자 함수 내부에서만 의미가 있다
    5.함수를 호출하면 this를 참조할 수 있는건 this가 함수에 전달되기 때문이다.
    6.this는 지역변수처럼 사용할 수 있다
    7.this 바인딩은 함수호출방식에 의해 동적으로 결정된다.

바인딩이란 무엇입니까?
식별자와 값을 연결하는 과정을 이야기합니다.

this바인딩이란 무엇입니까
this가 자신이 속한 객체나 생성할 인스턴스를 가리킨다고 이야기했습니다. this 바인딩은 this와 this가 가리킬 객체를 연결하는 과정을 이야기합니다.

질문! 여기서는 왜 this 바인딩이라는 이야기를 사용했을까 내가 봤을때 변수 선언이랑 크게 달라보이지 않는데 this 바인딩은 또 다른 역할을 하는건가?링크텍스트도와주세요 ㅠㅠ

this바인딩이 동적으로 결정된다는 말은 무엇입니까?
일반함수로 호출하거나, 메서드로 호출하거나, 생성자함수로 호출하거나, Function.prototype 메서드에 의한 간접호출(이 부분은 아직 이해 안되는 메서드임)할 수 있다. 이때 this는 전역객체가 되곧, 객체가 되기도, 인수가 되기도 한다.

3) 코드 실행 순서 관리를 수행한다.

0개의 댓글