[JavaScript] 호이스팅이란?

2023. 8. 4. 11:28프로그래밍/공식 문서 번역 + 공부

첫 문장의 경우 컴마로 문장구분이 돼있는데 3개로 이루어져있다. 이런 경우는 조금 구분해서 읽어본다.

직독한 내용

1. JavaScript Hoisting refers to the process -> 자바스크립트 호이스팅은 과정을 나타낸다  

2. whereby the interperter appears to move the declaration of functions -> whereby하든?(추측상 어디에있든..이런 느낌의 단어라고 생각된다) 함수의 declaration 이동시키기 위해 인터프리터를 나타낸다 

3.  variables or classes to the top of their scope -> 변수들과 클래스들을 스코프 최상단으로

4. prior to excution of the code -> 코드 실행 이전에

첫번째 문장을 매끄럽게 합치면 다음과 같다. 다만 나는 이 개념에 대해 어느정도 알고 있던 상태이기 때문에 해석이 가능한 것도 있다.

 

->자바스크립트 호이스팅은 코드실행 이전에 변수들과 클래스들을 그것들이 속한 함수내에서 스코프의 최상단으로 함수의 declaration을 이동시키기 위해 인터프리터가 appear(나타나다?)하는 whereby한 과정을 가르킨다.

 

Hoisting is not a term normatively defined in the ECMAScript specification

-> Hoisting은 ECMAscript normatively하게  설명서에 정의된 term이 아니다.

 

 

The spec does define a group of declarations as HoistableDeclaration, but this only includes functionfunctionasync function, and async function declarations. Hoisting is often considered a feature of var declarations as well, although in a different way. In colloquial terms, any of the following behaviors may be regarded as hoisting:

->

1. The spec does define a group of declarations as HoistableDeclaration -> 스펙은 호이스팅가능한Declaration(HositableDeclaration)로 declaration의 그룹에 정의한다. 

2. but this only includes functionfunction*async function,and async function declarations -> 그러나 이것은 오직 함수와, 함수, function*함수, 비동기 함수, 그리고 비동기 함수 declarations에만 포함된다.

3.  Hoisting is often considered a feature of var declarations as well 

-> 호이스팅은 종종 var변수의 decalaration의 기능이 잘 되게끔 고려한다.

4. although in a different way. -> 서로 다를지라도

5. In colloquial terms, any of the following behaviors may be regarded as hoisting:

->  colloquial terms에서는 다음과 같은 행동?(behaviors)이 호이스팅으로 reagrades될 것이다.

 

문장을 합쳐보면 다음과 같다. 

Hoisting은 ECMAscript normatively하게  설명서에 정의된 term이 아니다.

스펙은 호이스팅 가능한 Declaration으로 HositableDeclarataion 그룹에 정의되지만 이것은 오직 함수와 function*함수와 동기함수와 async function* 비동기 함수 delcaration만 포함한다. 호이스팅은 서로 다른 길(?)이라도 변수 declaration의 원활한 동작을 위해 종종 고려된다 (문장이 어색하다). colloquial terms에서는 다음과 같은 행동이 호이스팅으로 regarded된다. 

 

- 실제 번역된 문장

1.

자바스크립트 호이스팅은 해석기가 함수, 변수 또는 클래스의 선언을 코드 실행 전에 해당 범위의 맨 위로 이동하는 것처럼 보이는 프로세스를 말합니다.

호이스팅은 ECMAScript 명세에서 공식적으로 정의된 용어는 아닙니다. 명세에서는 함수, function*, async function, async function* 선언을 포함하는 HoistableDeclaration이라는 그룹의 선언을 정의합니다. 그러나 호이스팅은 종종 var 선언의 특징으로도 간주되며, 다른 방식으로 동작합니다. 구어적으로는 다음과 같은 동작들을 호이스팅으로 간주할 수 있습니다.

 

2.

JavaScript Hoisting은 인터프리터가 코드를 실행하기 전에 함수, 변수 또는 클래스의 선언을 해당 범위의 맨 위로 이동하는 것처럼 보이는 프로세스를 나타냅니다.
호이스팅은 ECMAScript 사양에서 규범적으로 정의된 용어가 아닙니다. 사양은 선언 그룹을 HoistableDeclaration으로 정의하지만 여기에는 function, function*, async function 및 async function* 선언만 포함됩니다. 호이스팅은 방법은 다르지만 종종 var 선언의 기능으로 간주됩니다. 구어체 용어로 다음 동작은 호이스팅으로 간주될 수 있습니다.

 

 

-저번에 학습을 통해 알게 된 단어

refer to : 나타내다, 가르키다, 인용하다. 그냥 be동사와 비슷한 역할로 ~~이다 의 느낌으로 사용되는 듯.

 

- 우선 내가 모르는 단어를 정리하고 다시 독해를 해보자.

normatively : normative -> 규범적인 , 따라서 부사형인 규범적으로. normal + tive의 형태가 합쳐진건가? 

상기 예문에서는 공식적으로 라는 뜻으로 사용되는 듯하다.

term : 용어 

declare : 선언하다.

declaration : 선언

consider : 고려하다, 생각하다, 여기다 // 여기서는 간주하다 라는 뜻으로 사용된 듯 하다. 여기서는 be + p.p의 형태로 사용됐기 때문에 생각됐다라는 피동사로 쓰였다. 그러므로 생각됐다, 고려됐다라는 뜻으로 간주한다 라고 해석한다는 것.

colloquial : 구어체

behavior : 행동, 동작

regard : ~으로 여기다. 관심, 고려, ~을 보다.

as well : 또한

although : 비록 ~일지라도 라는 뜻으로 알고 있었으나 여기서는 하지만 이라는 뜻으로 사용됐다. 

 

 

Hoisting은 ECMAscript normatively하게  설명서에 정의된 term이 아니다.

스펙은 호이스팅 가능한 Declaration으로 HositableDeclarataion 그룹에 정의되지만 이것은 오직 함수와 function*함수와 동기함수와 async function* 비동기 함수 delcaration만 포함한다. 호이스팅은 서로 다른 길(?)이라도 변수 declaration의 원활한 동작을 위해 종종 고려된다 (문장이 어색하다). colloquial terms에서는 다음과 같은 행동이 호이스팅으로 regarded된다. 

 

The spec does define a group of declarations as HoistableDeclaration, but this only includes functionfunctionasync function, and async function declarations. Hoisting is often considered a feature of var declarations as well, although in a different way. In colloquial terms, any of the following behaviors may be regarded as hoisting:

 

우선 내가 독해한 내용을 보면 단어를 모르는 것 보다도 문장을 문맥에 맞게 유추해서 읽는 부분이 부족함을 알 수 있다. 

스펙은 호이스팅 가능한~ 으로 독해한 부분을 보면 문장이 조금 맞지 않다. as는 ~로 라는 뜻이다. 위 문장을 다시 써보면

The spec) does define a group of declarations as HoistableDeclaration, 

spec은 앞에서 언급한 specification이라고 유추해볼 수 있다.

specify는 명시하다 의 뜻이고 specification은 설명서라고 읽으면 될 듯하다. 따라서 다시 독해하면 다음과 같다.

설명서에는 선언 그룹 HoistableDeclaration으로 정의했다. 나는 선언그룹으 로 라고 해석했는데 as의 위치가 HoistableDeclaration앞에 있으니 group of declaration이 목적어, (선언그룹) 그리고 뒤의 단어가 ~로 라는 뜻으로 부사의 느낌으로 쓰였다고 보면 되겠다.

다음 문장을 확인해보자. 

 

but this only includes function, function*, asynce function, and async funtion* declarations.  

여기서 this는 spec을 뜻함을 알 수 있다. 즉 설명서에는 오직(오직이라고 하기 보다 뒤의 목적어에 OO만 이라고 표현하는 편이 낫다) ~~이러이러한 것들의 선언 포함한다. 여기서 function으로 나오는 4개의 단어는 declarations를 꾸며주는 관용어이다. 진짜 목적어는 dclarations이다.

 

Hoisting is often considered a feature of var declarations as well, although in a diffrent way.

호이스팅은 종종 var변수의 선언 특징이라고 간주되지만 다른 방법이다. 

여기서 as well을 문장의 제일 앞으로 빼서 해석해보자. As well Hoisting~으로 바꿔보면 Also와 같은 역할이다.

그러면 또한 호이스팅은~하지만~ 다른 방법이다 와 같이 말하고 있다는 것을 알 수 있다. 

나는 항상 부사를 문장 맨 앞, 혹은 형용사 앞에만 온다고 생각해서 저렇게 문장 끝에 왔을 경우에 해석을 제대로 하지 못한 것 같다. 

 

In colloquial terms, any of the following behaviors may be regarded as hoisting:

우리가 자주쓰는 말로, 다음의 동작들은 호이스팅으로 간주될 수 있습니다. 

여기서도 as가 쓰였고 호이스팅으로 로 해석된다. 

 

 

아직 영어 문장이 익숙하지 않은것과 더불어 단어도 많이 모르니 헷갈리는데 문장 구성이나 전치사 부사 같은 것들이 좀 눈에 익고 독해 순서만 파악할 수 있어도 모르는 단어는 넘기고 어느정도 문장 흐름을 이해할 수 있지 않을까 생각한다.