Uvicorn & Gunicorn
Uvicorn and GunicornUvicorn and Gunicorn are important concepts when developing applications in Python. However, there are many concepts to be aware of in order to fully understand Uvicorn and Gunicorn. The following is a brief summary of the necessary concepts, and the details will be dealt with separately later.Necessary ConceptsStarletteStarlette is a Web application server that can run asynchronously. Starlette runs on top of Uvicorn.FastAPIFastAPI provides many features on top of Starlet...
Gas optimization in Solidity, Ethereum
Iβm sorry but my English is terrible. I hope you understand that generously.Recently, I was developing a toy project named Blind Market. Itβs a simple P2P trading application using smart contract. I was making a contract using Solidity, and the trade stage proceeded in the order of pending, shipping, and done. The problem was appeared in done phase. The problem was that when I tried to close the transaction by paying the price raised by the seller in msg.value, the following error occurred.Pe...
P2WPKH
P2WPKHP2WPKHλ λΉνΈμ½μΈ λ΄μμ κ°μ₯ μΌλ°μ μΈ μ€ν¬λ¦½νΈ νμμΌλ‘ λΉνΈμ½μΈ νλ‘ν μ½μ λν μ§λΆ κ±°λ μ νμ΄λ€. μ£Όμλ 1λ‘ μμνλλ°, μΈκ·Έμμ μ§μνλ μλ‘μ΄ μ£Όμ 3 λλ bc1λ‘ μμνλ μ£Όμλ³΄λ€ ν¨μ¬ λΉμΈλ€. https://mirror.xyz/0xA1d9f681B25C14C1eE7B87f1CF102E73cA3ad4d9/egjhNVklgy_LgZmcTXXAOTBa6ePBqO3Ja9ZSoDIad-8 μ¦, λΉνΈμ½μΈ μ£Όμκ° 1λ‘ μμνλ©΄ P2PKH μ£Όμλ₯Ό μ¬μ©νκ³ μλ κ²μ΄λ€. 곡κ°ν€μ κ°λ¨ν ν΄μμ΄λ©°, μ΄ ν΄μλ₯Ό μ£Όμλ‘ μ¬μ©νλ κ²μ΄λ€. μ΄κ²μ μλ λΉνΈμ½μΈ μ£Όμ νμμ΄μμΌλ©° μ€λκΉμ§λ μΆ©μ€ν μλνλ€. λ κ±°μ μ£Όμλ μΈκ·Έμκ³Ό νΈνλμ§ μμ§λ§, μ¬μ ν λ¬Έμ μμ΄ P2PKH μ£Όμμμ μΈκ·Έμ μ£Όμλ‘ BTCλ₯Ό λ³΄λΌ μ μλ€. κ·Έλ¬λ λ κ±°μ μ£Όμ νΈλμμ μ΄ λ ν¬κΈ° λλ¬Έμ P2PKH μ£Όμμμ μ μ‘νλ νκ· μλλ μΈκ·Έμ μ£Όμμμ μ μ‘ν λλ³΄λ€ λ λμ μκΈμ΄ λ°μν μ μλ€....
<100 subscribers
Uvicorn & Gunicorn
Uvicorn and GunicornUvicorn and Gunicorn are important concepts when developing applications in Python. However, there are many concepts to be aware of in order to fully understand Uvicorn and Gunicorn. The following is a brief summary of the necessary concepts, and the details will be dealt with separately later.Necessary ConceptsStarletteStarlette is a Web application server that can run asynchronously. Starlette runs on top of Uvicorn.FastAPIFastAPI provides many features on top of Starlet...
Gas optimization in Solidity, Ethereum
Iβm sorry but my English is terrible. I hope you understand that generously.Recently, I was developing a toy project named Blind Market. Itβs a simple P2P trading application using smart contract. I was making a contract using Solidity, and the trade stage proceeded in the order of pending, shipping, and done. The problem was appeared in done phase. The problem was that when I tried to close the transaction by paying the price raised by the seller in msg.value, the following error occurred.Pe...
P2WPKH
P2WPKHP2WPKHλ λΉνΈμ½μΈ λ΄μμ κ°μ₯ μΌλ°μ μΈ μ€ν¬λ¦½νΈ νμμΌλ‘ λΉνΈμ½μΈ νλ‘ν μ½μ λν μ§λΆ κ±°λ μ νμ΄λ€. μ£Όμλ 1λ‘ μμνλλ°, μΈκ·Έμμ μ§μνλ μλ‘μ΄ μ£Όμ 3 λλ bc1λ‘ μμνλ μ£Όμλ³΄λ€ ν¨μ¬ λΉμΈλ€. https://mirror.xyz/0xA1d9f681B25C14C1eE7B87f1CF102E73cA3ad4d9/egjhNVklgy_LgZmcTXXAOTBa6ePBqO3Ja9ZSoDIad-8 μ¦, λΉνΈμ½μΈ μ£Όμκ° 1λ‘ μμνλ©΄ P2PKH μ£Όμλ₯Ό μ¬μ©νκ³ μλ κ²μ΄λ€. 곡κ°ν€μ κ°λ¨ν ν΄μμ΄λ©°, μ΄ ν΄μλ₯Ό μ£Όμλ‘ μ¬μ©νλ κ²μ΄λ€. μ΄κ²μ μλ λΉνΈμ½μΈ μ£Όμ νμμ΄μμΌλ©° μ€λκΉμ§λ μΆ©μ€ν μλνλ€. λ κ±°μ μ£Όμλ μΈκ·Έμκ³Ό νΈνλμ§ μμ§λ§, μ¬μ ν λ¬Έμ μμ΄ P2PKH μ£Όμμμ μΈκ·Έμ μ£Όμλ‘ BTCλ₯Ό λ³΄λΌ μ μλ€. κ·Έλ¬λ λ κ±°μ μ£Όμ νΈλμμ μ΄ λ ν¬κΈ° λλ¬Έμ P2PKH μ£Όμμμ μ μ‘νλ νκ· μλλ μΈκ·Έμ μ£Όμμμ μ μ‘ν λλ³΄λ€ λ λμ μκΈμ΄ λ°μν μ μλ€....
Share Dialog
Share Dialog
λκ° μμ§ νλ©΄ νλμ¨μ΄μ μΈ λλμ΄ λ λ€. νμ§λ§, κ²°λ‘ λΆν° μ΄μΌκΈ°νλ©΄ μλ°μ€ν¬λ¦½νΈ μμ§λ νλμ (κ±°λν) ν¨μλ€.
νλ‘κ·Έλ¨μ λ§λλ κ°λ°μκ° νλ μΌμ λ³μλ₯Ό μ μΈνκ³ , μ¬λ¬κ°μ§ λͺ¨λ(ν¨μ)λ₯Ό λ§λ€μ΄ νλμ μ΄ν리μΌμ΄μ μΌλ‘ ν©μΉλ κ³Όμ μ΄λ€.
λͺ¨λνλ₯Ό ν΅ν΄ μ»λ μ΄μ μ€ λ κ°μ§λ λ³μ μΆ©λμ λ§λλ€. μ§μ λ³μλ₯Ό μ¬μ©ν΄ ν¨μκ° μ€νλ λλ§ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νλ€.
μ°λ¦¬κ° μ΅μν ν¨μ, call stack κ·Έλ¦¬κ³ λ³μλ₯Ό λ¨Όμ μ΄ν΄λ³΄μ. ν¨μκ° μ€νλλ©΄ call stackμ μμ΄κ³ returnμ pop λλ€. λλΆμ΄ ν¨μκ° μ€νλλ©΄ μ€ν λ¬Έλ§₯(Execution context)μ΄ μκΈ΄λ€.

κ°λ°μ νλ€λ³΄λ©΄ Context, νΉμ μ€ν λ¬Έλ§₯μ΄λΌλ λ¨μ΄λ₯Ό λ§μ΄ μ νκ² λλ€.
μ€ν 컨ν μ€νΈλ scope, hoisting, this, function, closure λ± Javascriptμ λμμ리λ₯Ό μ€λͺ νλλ° ν΅μ¬μ΄ λλ κ°λ μ΄λ€.
μ°μ μ μλ₯Ό μ΄ν΄λ³΄λ©΄ λ€μκ³Ό κ°λ€.
μ€ν κ°λ₯ν μ½λλ₯Ό νμννκ³ κ΅¬λΆνλ μΆμμ μΈ κ°λ
λ μ½κ² μ μνμ.
μ€ν κ°λ₯ν μ½λκ° (μ€νλκΈ° μν΄ νμν or μ€νλλ) νκ²½
μ μ μ½λΒ : μ μ μμμ μ‘΄μ¬νλ μ½λ
Eval μ½λΒ : eval ν¨μλ‘ μ€νλλ μ½λ
ν¨μ μ½λΒ : ν¨μ λ΄μ μ‘΄μ¬νλ μ½λ
μλ°μ€ν¬λ¦½νΈ μμ§μ μ½λλ₯Ό μ€ννκΈ° μνμ¬ μ€νμ νμν μ¬λ¬κ°μ§ μ 보λ₯Ό μκ³ μμ΄μΌ νλ€.
μ€νμ νμν μ¬λ¬κ°μ§ μ 보λ μλμ κ°μ κ²λ€μ΄ μλ€.
λ³μΒ : μ μλ³μ, μ§μλ³μ, λ§€κ°λ³μ, κ°μ²΄μ Property
ν¨μ μ μΈ
λ³μμ μ ν¨λ²μ(Scope)
this
κ°μμ€λ½μ§λ§, μ½λλ₯Ό 보면μ μ€λͺ μ μ΄μ΄κ°κ² λ€.
var x = 'xxx';
function foo () {
var y = 'yyy';
function bar () {
var z = 'zzz';
console.log(x + y + z);
}
bar();
}
foo();
μ μ½λλ₯Ό μ€ννλ©΄ μλμ κ°μ΄ μ€ν 컨ν μ€νΈ μ€ν(Stack)μ΄ μμ±νκ³ μλ©Ένλ€.

νμ¬ μ€ν μ€μΈ 컨ν μ€νΈμμ μ΄ μ»¨ν μ€νΈμ κ΄λ ¨μλ μ½λ (μλ₯Ό λ€μ΄ λ€λ₯Έ ν¨μ)κ° μ€νλλ©΄ μλ‘μ΄ μ»¨ν μ€νΈκ° μμ±λλ€.
μ΄ μ»¨ν μ€νΈλ μ€νμ μμ΄κ² λκ³ μ»¨νΈλ‘€(μ μ΄κΆ)μ΄ μ΄λνλ€.
μ μ μ½λ(Global code)λ‘ μ»¨νΈλ‘€μ΄ μ§μ νλ©΄ μ μ μ€ν 컨ν μ€νΈκ° μμ±λκ³ μ€ν 컨ν μ€νΈ μ€νμ μμΈλ€. μ μ μ€ν 컨ν μ€νΈλ μ ν리μΌμ΄μ μ΄ μ’ λ£λ λ(μΉ νμ΄μ§μμ λκ°κ±°λ λΈλΌμ°μ λ₯Ό λ«μ λ)κΉμ§ μ μ§λλ€.
컨νΈλ‘€μ΄ μ€ν κ°λ₯ν μ½λλ‘ μ΄λνλ©΄ λ Όλ¦¬μ μ€ν ꡬ쑰λ₯Ό κ°μ§λ μλ‘μ΄ μ€ν 컨ν μ€νΈ μ€νμ΄ μμ±λλ€.
ν¨μλ₯Ό νΈμΆνλ©΄ ν΄λΉ ν¨μμ μ€ν 컨ν μ€νΈκ° μμ±λλ©° μ§μ μ μ€νλ μ½λ λΈλ‘μ μ€ν 컨ν μ€νΈ μμ μμΈλ€.
ν¨μ μ€νμ΄ λλλ©΄ ν΄λΉ ν¨μμ μ€ν 컨ν μ€νΈλ₯Ό νκΈ°νκ³ μ§μ μ μ€ν 컨ν μ€νΈμ 컨νΈλ‘€μ λ°ννλ€.
μ€ν 컨ν μ€νΈλ μ€ν κ°λ₯ν μ½λλ₯Ό νμννκ³ κ΅¬λΆνλ μΆμμ μΈ κ°λ μ΄μ§λ§ 물리μ μΌλ‘λ κ°μ²΄μ ννλ₯Ό κ°μ§λ©° μλμ 3κ°μ§ νλ‘νΌν°λ₯Ό μμ νλ€.

μ€ν 컨ν μ€νΈκ° μ€νλλ©΄ μλ°μ€ν¬λ¦½νΈ μμ§μ μ€νμ νμν μ¬λ¬ μ 보λ€μ λ΄μ κ°μ²΄λ₯Ό μμ±νλ€.
μ΄λ₯Ό Variable Object(μ΄ν VO)λΌκ³ νλ€. VOλ μ½λκ° μ€νλ λ μμ§μ μν΄ μ°Έμ‘°λλ©° μ½λμμλ μ κ·Όν μ μλ€.
VOλ λ³μ, λ§€κ° λ³μ(parameter)μ μΈμ μ 보(arguments), ν¨μ μ μΈ(ν¨μ ννμμ μ μΈ)μ κ°μ μ 보λ€μ λ΄λλ€.
VOλ μ€ν 컨ν μ€νΈμ νλ‘νΌν°μ΄κΈ° λλ¬Έμ κ°μ κ°μ§λλ°, μ΄ κ°μ λ€λ₯Έ κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€.
κ·Έλ°λ° μ μ μ½λ μ€νμ μμ±λλ μ μ 컨ν μ€νΈμ κ²½μ°μ ν¨μλ₯Ό μ€νν λ μμ±λλ ν¨μ 컨ν μ€νΈμ κ²½μ°, κ°λ¦¬ν€λ κ°μ²΄κ° λ€λ₯΄λ€.
μ΄λ μ μ μ½λμ ν¨μμ λ΄μ©μ΄ λ€λ₯΄κΈ° λλ¬Έμ΄λ€. μλ₯Ό λ€μ΄ μ μ μ½λμλ λ§€κ°λ³μκ° μμ§λ§ ν¨μμλ λ§€κ°λ³μκ° μλ€.
μ μ 컨ν μ€νΈμ κ²½μ°, VOλ μ μΌνλ©° μ΅μμμ μμΉνκ³ λͺ¨λ μ μ λ³μ, μ μ ν¨μ λ±μ ν¬ν¨νλ μ μ κ°μ²΄(Global Object)λ₯Ό κ°λ¦¬ν¨λ€.
μ μ κ°μ²΄λ μ μμ μ μΈλ μ μ λ³μμ μ μ ν¨μλ₯Ό νλ‘νΌν°λ‘ μμ νλ€.

ν¨μ 컨ν μ€νΈμ κ²½μ°, VOλ νμ± κ°μ²΄(Activation Object)λ₯Ό κ°λ¦¬ν€λ©° λ§€κ° λ³μμ μΈμλ€μ μ 보λ₯Ό λ°°μ΄μ ννλ‘ λ΄λ arguments objectκ° μΆκ°λλ€.

μ€μ½ν 체μΈμ μΌμ’ μ 리μ€νΈλ‘μ μ μ κ°μ²΄μ μ€μ²©λ ν¨μ μ€μ½νμ λ νΌλ°μ€λ₯Ό μ°¨λ‘λ‘ μ μ₯νκ³ μλ€.
λ€μ λ§ν΄, μ€μ½ν 체μΈμ ν΄λΉ μ μ λλ ν¨μκ° μ°Έμ‘°ν μ μλ λ³μ, ν¨μ μ μΈ λ±μ μ 보λ₯Ό λ΄κ³ μλ μ μ κ°μ²΄(GO) λλ νμ± κ°μ²΄(AO)μ 리μ€νΈλ₯Ό κ°λ¦¬ν¨λ€.

νμ¬ μ€ν 컨ν μ€νΈμ νμ± κ°μ²΄(AO)λ₯Ό μ λλ‘ νμ¬ μμ°¨μ μΌλ‘ μμ 컨ν μ€νΈμ νμ± κ°μ²΄(AO)λ₯Ό κ°λ¦¬ν€λ©° λ§μ§λ§ 리μ€νΈλ μ μ κ°μ²΄(GO)λ₯Ό κ°λ¦¬ν¨λ€.
μ€μ½ν 체μΈμ μλ³μ μ€μμ κ°μ²΄(μ μ κ°μ²΄ μ μΈ)μ νλ‘νΌν°κ° μλ μλ³μ, μ¦ λ³μλ₯Ό κ²μνλ λ©μ»€λμ¦μ΄λ€.
μλ³μ μ€μμ λ³μκ° μλ κ°μ²΄μ νλ‘νΌν°(λ¬Όλ‘ λ©μλλ ν¬ν¨λλ€)λ₯Ό κ²μνλ λ©μ»€λμ¦μ νλ‘ν νμ 체μΈ(Prototype Chain)μ΄λ€.
μμ§μ μ€μ½ν 체μΈμ ν΅ν΄ λ μ컬 μ€μ½νλ₯Ό νμ νλ€.
ν¨μκ° μ€μ²© μνμΌ λ νμν¨μ λ΄μμ μμν¨μμ μ€μ½νμ μ μ μ€μ½νκΉμ§ μ€μ½ν μ²΄μΈ κ²μμ ν΅ν΄ μ°Έμ‘°ν μ μλ€.
ν¨μκ° μ€μ²©λμ΄ μμΌλ©΄ μ€μ²©λ λλ§λ€ λΆλͺ¨ ν¨μμ Scopeκ° μμ ν¨μμ μ€μ½ν 체μΈμ ν¬ν¨λλ€.
ν¨μ μ€νμ€μ λ³μλ₯Ό λ§λλ©΄ κ·Έ λ³μλ₯Ό μ°μ νμ¬ Scope, μ¦ Activation Objectμμ κ²μν΄λ³΄κ³ , λ§μ½ κ²μμ μ€ν¨νλ©΄ μ€μ½ν 체μΈμ λ΄κ²¨μ§ μμλλ‘ κ·Έ κ²μμ μ΄μ΄κ°κ² λλ κ²μ΄λ€.
μ΄κ²μ΄ μ€μ½ν 체μΈμ΄λΌκ³ λΆλ¦¬λ μ΄μ μ΄λ€.
μλ₯Ό λ€μ΄ ν¨μ λ΄μ μ½λμμ λ³μλ₯Ό μ°Έμ‘°νλ©΄ μμ§μ μ€μ½ν 체μΈμ 첫λ²μ§Έ 리μ€νΈκ° κ°λ¦¬ν€λ AOμ μ κ·Όνμ¬ λ³μλ₯Ό κ²μνλ€.
λ§μΌ κ²μμ μ€ν¨νλ©΄ λ€μ 리μ€νΈκ° κ°λ¦¬ν€λ Activation Object(λλ μ μ κ°μ²΄)λ₯Ό κ²μνλ€.
μ΄μ κ°μ΄ μμ°¨μ μΌλ‘ μ€μ½ν 체μΈμμ λ³μλ₯Ό κ²μνλλ° κ²°κ΅ κ²μμ μ€ν¨νλ©΄ μ μλμ§ μμ λ³μμ μ κ·Όνλ κ²μΌλ‘ νλ¨νμ¬ Reference μλ¬λ₯Ό λ°μμν¨λ€.
this νλ‘νΌν°μλ this κ°μ΄ ν λΉλλ€.
thisμ ν λΉλλ κ°μ ν¨μ νΈμΆ ν¨ν΄μ μν΄ κ²°μ λλ€.
Javaμμμ thisλ μκΈ° μμ (self)λ₯Ό κ°λ¦¬ν€λ μ°Έμ‘° λ³μμ΄λ€.
κ·Έλ¬λ javascriptμμλ κ·Έλ μ§ μλ€.
μλ°μ€ν¬λ¦½νΈμ κ²½μ° Javaμ κ°μ΄ thisμ λ°μΈλ©λλ κ°μ²΄λ ν κ°μ§κ° μλλΌ ν΄λΉ ν¨μ νΈμΆ λ°©μμ λ°λΌ thisμ λ°μΈλ©λλ κ°μ²΄κ° λ¬λΌμ§λ€.
λ€μ λ§ν΄, ν¨μλ₯Ό μ μΈν λ thisμ λ°μΈλ©ν κ°μ²΄κ° μ μ μΌλ‘ κ²°μ λλ κ²μ΄ μλκ³ , ν¨μλ₯Ό νΈμΆν λ ν¨μκ° μ΄λ»κ² νΈμΆλμλμ§μ λ°λΌ thisμ λ°μΈλ©ν κ°μ²΄κ° λμ μΌλ‘ κ²°μ λλ€.
https://www.oowgnoj.dev/review/js-engine-is-function
https://poiemaweb.com/js-execution-context
http://dmitrysoshnikov.com/ecmascript/chapter-1-execution-contexts/
http://dmitrysoshnikov.com/ecmascript/chapter-2-variable-object/
http://stackoverflow.com/questions/1788923/parameter-vs-argument
λκ° μμ§ νλ©΄ νλμ¨μ΄μ μΈ λλμ΄ λ λ€. νμ§λ§, κ²°λ‘ λΆν° μ΄μΌκΈ°νλ©΄ μλ°μ€ν¬λ¦½νΈ μμ§λ νλμ (κ±°λν) ν¨μλ€.
νλ‘κ·Έλ¨μ λ§λλ κ°λ°μκ° νλ μΌμ λ³μλ₯Ό μ μΈνκ³ , μ¬λ¬κ°μ§ λͺ¨λ(ν¨μ)λ₯Ό λ§λ€μ΄ νλμ μ΄ν리μΌμ΄μ μΌλ‘ ν©μΉλ κ³Όμ μ΄λ€.
λͺ¨λνλ₯Ό ν΅ν΄ μ»λ μ΄μ μ€ λ κ°μ§λ λ³μ μΆ©λμ λ§λλ€. μ§μ λ³μλ₯Ό μ¬μ©ν΄ ν¨μκ° μ€νλ λλ§ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νλ€.
μ°λ¦¬κ° μ΅μν ν¨μ, call stack κ·Έλ¦¬κ³ λ³μλ₯Ό λ¨Όμ μ΄ν΄λ³΄μ. ν¨μκ° μ€νλλ©΄ call stackμ μμ΄κ³ returnμ pop λλ€. λλΆμ΄ ν¨μκ° μ€νλλ©΄ μ€ν λ¬Έλ§₯(Execution context)μ΄ μκΈ΄λ€.

κ°λ°μ νλ€λ³΄λ©΄ Context, νΉμ μ€ν λ¬Έλ§₯μ΄λΌλ λ¨μ΄λ₯Ό λ§μ΄ μ νκ² λλ€.
μ€ν 컨ν μ€νΈλ scope, hoisting, this, function, closure λ± Javascriptμ λμμ리λ₯Ό μ€λͺ νλλ° ν΅μ¬μ΄ λλ κ°λ μ΄λ€.
μ°μ μ μλ₯Ό μ΄ν΄λ³΄λ©΄ λ€μκ³Ό κ°λ€.
μ€ν κ°λ₯ν μ½λλ₯Ό νμννκ³ κ΅¬λΆνλ μΆμμ μΈ κ°λ
λ μ½κ² μ μνμ.
μ€ν κ°λ₯ν μ½λκ° (μ€νλκΈ° μν΄ νμν or μ€νλλ) νκ²½
μ μ μ½λΒ : μ μ μμμ μ‘΄μ¬νλ μ½λ
Eval μ½λΒ : eval ν¨μλ‘ μ€νλλ μ½λ
ν¨μ μ½λΒ : ν¨μ λ΄μ μ‘΄μ¬νλ μ½λ
μλ°μ€ν¬λ¦½νΈ μμ§μ μ½λλ₯Ό μ€ννκΈ° μνμ¬ μ€νμ νμν μ¬λ¬κ°μ§ μ 보λ₯Ό μκ³ μμ΄μΌ νλ€.
μ€νμ νμν μ¬λ¬κ°μ§ μ 보λ μλμ κ°μ κ²λ€μ΄ μλ€.
λ³μΒ : μ μλ³μ, μ§μλ³μ, λ§€κ°λ³μ, κ°μ²΄μ Property
ν¨μ μ μΈ
λ³μμ μ ν¨λ²μ(Scope)
this
κ°μμ€λ½μ§λ§, μ½λλ₯Ό 보면μ μ€λͺ μ μ΄μ΄κ°κ² λ€.
var x = 'xxx';
function foo () {
var y = 'yyy';
function bar () {
var z = 'zzz';
console.log(x + y + z);
}
bar();
}
foo();
μ μ½λλ₯Ό μ€ννλ©΄ μλμ κ°μ΄ μ€ν 컨ν μ€νΈ μ€ν(Stack)μ΄ μμ±νκ³ μλ©Ένλ€.

νμ¬ μ€ν μ€μΈ 컨ν μ€νΈμμ μ΄ μ»¨ν μ€νΈμ κ΄λ ¨μλ μ½λ (μλ₯Ό λ€μ΄ λ€λ₯Έ ν¨μ)κ° μ€νλλ©΄ μλ‘μ΄ μ»¨ν μ€νΈκ° μμ±λλ€.
μ΄ μ»¨ν μ€νΈλ μ€νμ μμ΄κ² λκ³ μ»¨νΈλ‘€(μ μ΄κΆ)μ΄ μ΄λνλ€.
μ μ μ½λ(Global code)λ‘ μ»¨νΈλ‘€μ΄ μ§μ νλ©΄ μ μ μ€ν 컨ν μ€νΈκ° μμ±λκ³ μ€ν 컨ν μ€νΈ μ€νμ μμΈλ€. μ μ μ€ν 컨ν μ€νΈλ μ ν리μΌμ΄μ μ΄ μ’ λ£λ λ(μΉ νμ΄μ§μμ λκ°κ±°λ λΈλΌμ°μ λ₯Ό λ«μ λ)κΉμ§ μ μ§λλ€.
컨νΈλ‘€μ΄ μ€ν κ°λ₯ν μ½λλ‘ μ΄λνλ©΄ λ Όλ¦¬μ μ€ν ꡬ쑰λ₯Ό κ°μ§λ μλ‘μ΄ μ€ν 컨ν μ€νΈ μ€νμ΄ μμ±λλ€.
ν¨μλ₯Ό νΈμΆνλ©΄ ν΄λΉ ν¨μμ μ€ν 컨ν μ€νΈκ° μμ±λλ©° μ§μ μ μ€νλ μ½λ λΈλ‘μ μ€ν 컨ν μ€νΈ μμ μμΈλ€.
ν¨μ μ€νμ΄ λλλ©΄ ν΄λΉ ν¨μμ μ€ν 컨ν μ€νΈλ₯Ό νκΈ°νκ³ μ§μ μ μ€ν 컨ν μ€νΈμ 컨νΈλ‘€μ λ°ννλ€.
μ€ν 컨ν μ€νΈλ μ€ν κ°λ₯ν μ½λλ₯Ό νμννκ³ κ΅¬λΆνλ μΆμμ μΈ κ°λ μ΄μ§λ§ 물리μ μΌλ‘λ κ°μ²΄μ ννλ₯Ό κ°μ§λ©° μλμ 3κ°μ§ νλ‘νΌν°λ₯Ό μμ νλ€.

μ€ν 컨ν μ€νΈκ° μ€νλλ©΄ μλ°μ€ν¬λ¦½νΈ μμ§μ μ€νμ νμν μ¬λ¬ μ 보λ€μ λ΄μ κ°μ²΄λ₯Ό μμ±νλ€.
μ΄λ₯Ό Variable Object(μ΄ν VO)λΌκ³ νλ€. VOλ μ½λκ° μ€νλ λ μμ§μ μν΄ μ°Έμ‘°λλ©° μ½λμμλ μ κ·Όν μ μλ€.
VOλ λ³μ, λ§€κ° λ³μ(parameter)μ μΈμ μ 보(arguments), ν¨μ μ μΈ(ν¨μ ννμμ μ μΈ)μ κ°μ μ 보λ€μ λ΄λλ€.
VOλ μ€ν 컨ν μ€νΈμ νλ‘νΌν°μ΄κΈ° λλ¬Έμ κ°μ κ°μ§λλ°, μ΄ κ°μ λ€λ₯Έ κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€.
κ·Έλ°λ° μ μ μ½λ μ€νμ μμ±λλ μ μ 컨ν μ€νΈμ κ²½μ°μ ν¨μλ₯Ό μ€νν λ μμ±λλ ν¨μ 컨ν μ€νΈμ κ²½μ°, κ°λ¦¬ν€λ κ°μ²΄κ° λ€λ₯΄λ€.
μ΄λ μ μ μ½λμ ν¨μμ λ΄μ©μ΄ λ€λ₯΄κΈ° λλ¬Έμ΄λ€. μλ₯Ό λ€μ΄ μ μ μ½λμλ λ§€κ°λ³μκ° μμ§λ§ ν¨μμλ λ§€κ°λ³μκ° μλ€.
μ μ 컨ν μ€νΈμ κ²½μ°, VOλ μ μΌνλ©° μ΅μμμ μμΉνκ³ λͺ¨λ μ μ λ³μ, μ μ ν¨μ λ±μ ν¬ν¨νλ μ μ κ°μ²΄(Global Object)λ₯Ό κ°λ¦¬ν¨λ€.
μ μ κ°μ²΄λ μ μμ μ μΈλ μ μ λ³μμ μ μ ν¨μλ₯Ό νλ‘νΌν°λ‘ μμ νλ€.

ν¨μ 컨ν μ€νΈμ κ²½μ°, VOλ νμ± κ°μ²΄(Activation Object)λ₯Ό κ°λ¦¬ν€λ©° λ§€κ° λ³μμ μΈμλ€μ μ 보λ₯Ό λ°°μ΄μ ννλ‘ λ΄λ arguments objectκ° μΆκ°λλ€.

μ€μ½ν 체μΈμ μΌμ’ μ 리μ€νΈλ‘μ μ μ κ°μ²΄μ μ€μ²©λ ν¨μ μ€μ½νμ λ νΌλ°μ€λ₯Ό μ°¨λ‘λ‘ μ μ₯νκ³ μλ€.
λ€μ λ§ν΄, μ€μ½ν 체μΈμ ν΄λΉ μ μ λλ ν¨μκ° μ°Έμ‘°ν μ μλ λ³μ, ν¨μ μ μΈ λ±μ μ 보λ₯Ό λ΄κ³ μλ μ μ κ°μ²΄(GO) λλ νμ± κ°μ²΄(AO)μ 리μ€νΈλ₯Ό κ°λ¦¬ν¨λ€.

νμ¬ μ€ν 컨ν μ€νΈμ νμ± κ°μ²΄(AO)λ₯Ό μ λλ‘ νμ¬ μμ°¨μ μΌλ‘ μμ 컨ν μ€νΈμ νμ± κ°μ²΄(AO)λ₯Ό κ°λ¦¬ν€λ©° λ§μ§λ§ 리μ€νΈλ μ μ κ°μ²΄(GO)λ₯Ό κ°λ¦¬ν¨λ€.
μ€μ½ν 체μΈμ μλ³μ μ€μμ κ°μ²΄(μ μ κ°μ²΄ μ μΈ)μ νλ‘νΌν°κ° μλ μλ³μ, μ¦ λ³μλ₯Ό κ²μνλ λ©μ»€λμ¦μ΄λ€.
μλ³μ μ€μμ λ³μκ° μλ κ°μ²΄μ νλ‘νΌν°(λ¬Όλ‘ λ©μλλ ν¬ν¨λλ€)λ₯Ό κ²μνλ λ©μ»€λμ¦μ νλ‘ν νμ 체μΈ(Prototype Chain)μ΄λ€.
μμ§μ μ€μ½ν 체μΈμ ν΅ν΄ λ μ컬 μ€μ½νλ₯Ό νμ νλ€.
ν¨μκ° μ€μ²© μνμΌ λ νμν¨μ λ΄μμ μμν¨μμ μ€μ½νμ μ μ μ€μ½νκΉμ§ μ€μ½ν μ²΄μΈ κ²μμ ν΅ν΄ μ°Έμ‘°ν μ μλ€.
ν¨μκ° μ€μ²©λμ΄ μμΌλ©΄ μ€μ²©λ λλ§λ€ λΆλͺ¨ ν¨μμ Scopeκ° μμ ν¨μμ μ€μ½ν 체μΈμ ν¬ν¨λλ€.
ν¨μ μ€νμ€μ λ³μλ₯Ό λ§λλ©΄ κ·Έ λ³μλ₯Ό μ°μ νμ¬ Scope, μ¦ Activation Objectμμ κ²μν΄λ³΄κ³ , λ§μ½ κ²μμ μ€ν¨νλ©΄ μ€μ½ν 체μΈμ λ΄κ²¨μ§ μμλλ‘ κ·Έ κ²μμ μ΄μ΄κ°κ² λλ κ²μ΄λ€.
μ΄κ²μ΄ μ€μ½ν 체μΈμ΄λΌκ³ λΆλ¦¬λ μ΄μ μ΄λ€.
μλ₯Ό λ€μ΄ ν¨μ λ΄μ μ½λμμ λ³μλ₯Ό μ°Έμ‘°νλ©΄ μμ§μ μ€μ½ν 체μΈμ 첫λ²μ§Έ 리μ€νΈκ° κ°λ¦¬ν€λ AOμ μ κ·Όνμ¬ λ³μλ₯Ό κ²μνλ€.
λ§μΌ κ²μμ μ€ν¨νλ©΄ λ€μ 리μ€νΈκ° κ°λ¦¬ν€λ Activation Object(λλ μ μ κ°μ²΄)λ₯Ό κ²μνλ€.
μ΄μ κ°μ΄ μμ°¨μ μΌλ‘ μ€μ½ν 체μΈμμ λ³μλ₯Ό κ²μνλλ° κ²°κ΅ κ²μμ μ€ν¨νλ©΄ μ μλμ§ μμ λ³μμ μ κ·Όνλ κ²μΌλ‘ νλ¨νμ¬ Reference μλ¬λ₯Ό λ°μμν¨λ€.
this νλ‘νΌν°μλ this κ°μ΄ ν λΉλλ€.
thisμ ν λΉλλ κ°μ ν¨μ νΈμΆ ν¨ν΄μ μν΄ κ²°μ λλ€.
Javaμμμ thisλ μκΈ° μμ (self)λ₯Ό κ°λ¦¬ν€λ μ°Έμ‘° λ³μμ΄λ€.
κ·Έλ¬λ javascriptμμλ κ·Έλ μ§ μλ€.
μλ°μ€ν¬λ¦½νΈμ κ²½μ° Javaμ κ°μ΄ thisμ λ°μΈλ©λλ κ°μ²΄λ ν κ°μ§κ° μλλΌ ν΄λΉ ν¨μ νΈμΆ λ°©μμ λ°λΌ thisμ λ°μΈλ©λλ κ°μ²΄κ° λ¬λΌμ§λ€.
λ€μ λ§ν΄, ν¨μλ₯Ό μ μΈν λ thisμ λ°μΈλ©ν κ°μ²΄κ° μ μ μΌλ‘ κ²°μ λλ κ²μ΄ μλκ³ , ν¨μλ₯Ό νΈμΆν λ ν¨μκ° μ΄λ»κ² νΈμΆλμλμ§μ λ°λΌ thisμ λ°μΈλ©ν κ°μ²΄κ° λμ μΌλ‘ κ²°μ λλ€.
https://www.oowgnoj.dev/review/js-engine-is-function
https://poiemaweb.com/js-execution-context
http://dmitrysoshnikov.com/ecmascript/chapter-1-execution-contexts/
http://dmitrysoshnikov.com/ecmascript/chapter-2-variable-object/
http://stackoverflow.com/questions/1788923/parameter-vs-argument
No comments yet