-
Notifications
You must be signed in to change notification settings - Fork 0
javascript_in_depth_2
์๋ฐ์คํฌ๋ฆฝํธ ๋ณ์๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ํํ๋ฅผ ์์ฉํ ์ ์๋๋ก ํ(type)์ ๋ํ ์ ์ฝ์ด ์๋ค.
ํน์ ๋ณ์๊ฐ ์ด๋ค ํํ์ธ์ง ํ์ธํ๋ ์ฐ์ฐ์๋ก๋ typeof๊ฐ ์๋ค.
typeof null; // === "object"null ๊ฐ์ด object๋ฅผ ๋ฐํํ๋ ์ด์ ๋ null์ ๊ธฐ๋ณธํ์ด์ง๋ง ๊ฐ๋ฐ ๋น์ ๋ค๋ฅธ ์ธ์ด๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก null์ด๋ฉด 0๊ฐ์ ๊ฐ์ง๋ ๊ฐ์ฒด๋ก ์ทจ๊ธํ์ฌ "object"๋ฅผ ๋ฐํํ๋๋ก ๊ฐ๋ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
ECMAScript 2016 12.5.5 The typeof Operator
๊ฐ์ฒด์ ๋ํ์ฌ ์ด๋ ํ ๊ฐ์ฒด์ธ์ง ํ์ธํ๋ instanceof ์ฐ์ฐ์๊ฐ ์๋ค. instanceof ์ฐ์ฐ์๋ ๊ธฐ๋ณธํ์ ๋ํด์๋ ๋์ํ์ง ์๋๋ค.
var color1 = new String("red");
var color2 = "red";
color1 == color2; // true
color1 instanceof String; // true
color2 instanceof String; // false
color2 instanceof Object; // false
color1 === color2; // false
color1.constructor === String; // true
color2.constructor === String; // true== ์ฐ์ฐ์๋ก ๋น๊ต์์๋ ํ๋ณํ์ด ์ผ์ด๋์ ๊ฐ์ ๊ฐ์ผ๋ก ํ๋จํ์ง๋ง === ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์๊ฒฉํ ๋น๊ต๋ฅผ ์ํํด์
๋ค๋ฅธ๊ฐ์ผ๋ก ํ๋จํ๋ค. color1์ String์ ์ธ์คํด์ค์ด๊ณ color2๋ ๊ธฐ๋ณธํ์ด๋ฏ๋ก ์๋ก ๋ค๋ฅด๋ค๋ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
๋ ๋ณ์์ constructor ์์ฑ์ ์ดํด๋ณด๋ฉด ๋๋ค String์ด๋ผ๊ณ ๋์ค๋๋ฐ, color2์ ์์ฑ์๊ฐ String์ธ ์ด์ ๋ color2.constructor๋ฅผ
์ฐ์ฐํ ๋ ๋ด๋ถ์ ์ผ๋ก ํ๋ณํ์ด ์ผ์ด๋ ๋ค์์ constructor์ ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ด๋ค.
์์ฑ์ผ๋ก ์ ๊ทผํ๋ ๊ฒฝ์ฐ ๋ด๋ถ์ ์ผ๋ก GetValue๋ฅผ ํตํด ๊ฐ์ ์ฐธ์กฐํ๋๋ฐ, GetValue์์ ๊ธฐ๋ณธํ์ธ base์ ๋ํด์ ์์ฑ๊ฐ์ ๊ฐ์ ธ์ฌ ๋ ToObject๋ฅผ ์ฌ์ฉํด์ ๊ธฐ๋ณธํ์ ๊ฐ์ฒด๋ก ๋ณ๊ฒฝํด์
๊ฐ์ ธ์จ๋ค. ๊ธฐ๋ณธํ ๋ฌธ์์ด์ ToObjectํจ์์ ์ธ์๋ก ๋๊ฒจ์ฃผ๋ฉด String์ String ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ค ์
๋ ฅ๊ฐ์ ์ค์ ํ์ฌ ๋ฐํํ๋ค.
๋ฐ๋ผ์, ์๋ก์ด String ๊ฐ์ฒด๊ฐ ์์ฑ๋์ด ๋ฐํ๋๋ฏ๋ก color2์ ์์ฑ์ ์ ๊ทผํ๋ฉด ๋ด๋ถ์ ์ผ๋ก๋ String ๊ฐ์ฒด๋ก ๋ณํ๋๋ค.
ECMAScript 2016 6.2.3.1 GetValue
ECMAScript 2016 7.1.13 ToObject ( argument )
๋ฌธ์์ด ์์ฑ ๋ฐฉ๋ฒ์๋ ์ฐจ์ด๊ฐ ์๋ค.
var color1 = new String("red");
var color2 = "red";
var color3 = String("red");
console.log(color1 instanceof String); // true
console.log(color2 instanceof String); // false
console.log(color3 instanceof String); // false
console.log(typeof color1) // object
console.log(typeof color2) // string
console.log(typeof color3) // stringString ํจ์ํธ์ถ์ ๋ด๋ถ์ ์ผ๋ก ToString() ํธ์ถํด์ ๊ฐ์ ๋ฐํํ๋๋ฐ ToString()์ ์
๋ ฅ ์ธ์๊ฐ ๊ธฐ๋ณธํ์ธ String์ผ ๊ฒฝ์ฐ ์ธ์๋ฅผ ๊ทธ๋๋ก ๋ฐํํ๊ฒ ๋์ด ์๋ค.
๋ฐ๋ผ์ String("red")๋ ๋ฌธ์์ด ๊ธฐ๋ณธํ์ธ "red"์ ๋์ผํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
ECMAScript 2016 21.1.1.1 String
ECMAScript 2016 7.1.12 ToString ( argument )
๊ธ๋ก๋ฒ ๋ณ์๋ฅผ ์์ ํด์ผ ํ๋ ์ด์
- **์์ค์ ๋ฐ์ดํฐ์ ๊ณต๊ฐ์ฑ๊ณผ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ ์ธ๋ถ ์์ค ํ์ฉ **
- ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ํฐ ํ๋ก์ ํธ๋ก ์์ค๋ฅผ ๋๋์ด์ ๊ด๋ฆฌํ ๋ ์ถฉ๋์ด ์ผ์ด๋ ์ ์๋ค.
- ๋ชจ๋ํ๋ฅผ ํ๊ฑฐ๋ ํด๋ก์ ๋ฅผ ํตํด ์๋ฐฉํ๋ ๊ฒ์ด ์ข๋ค.
- ๋น๋๊ธฐ ๋ก์ง๊ณผ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ฒ๋ฆฌ
- ์ฌ์ฉ์์ ์ ๋ ฅ ์ด๋ฒคํธ ๋๋ ์๋ฒ์์ ํต์ ๋ฑ์ ๋น๋๊ธฐ ๋ก์ง์ ์ฒ๋ฆฌํ ๋ ๊ธ๋ก๋ฒ ๋ณ์๊ฐ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์์์น ๋ชปํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๊ฒ ๋ ์ ์๋ค.
- PC์ ๊ฐ์ด ์ข์ ์ฑ๋ฅ์์๋ถํฐ ๋ชจ๋ฐ์ผ์ ์ ์ข์ ์ฑ๋ฅ๊น์ง ๋ค์ํ ๋ธ๋ผ์ฐ์ง ํ๊ฒฝ
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ฌ์ฉํ๊ณ ์์ด์ ํด๋น ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ ๋ค๋ฅธ ๋ณ์๋ ํจ์๊ฐ ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ํ์ง ์๋๋ค. ๋ํ, ๋์ ์ธ ๋ณ์ ์ฐธ์กฐ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ํ์ ์ค์ฝํ๊ฐ ์ด์์๋ค๋ฉด, ์์์ ๋ณ์๋ค๋ ๊ณ์ ์ฐธ์กฐํ ์ ์๋ ์ํ๋ก ๋จ์์๊ฒ ๋๋ค.
- ์ ์ ์ฌ์ฉํ ๋ณ์๋ ๋ก์ปฌ ๋ณ์๋ก ํ์ฌ์ ์ค์ฝํ์ ์ฌ๋ฆฌ๊ณ , AJAX์ ์์ฒญ์ผ๋ก ์ค๊ฒ ๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ ๋ฌธ์์ด๋ก ๋ก์ปฌ๋ก ๋ณด๊ดํ๊ณ ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด ๋ฐ๋ก๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํด์ฃผ๋ ๊ฒ์ด ์ข๋ค.
๋ค์์ ํ์ค์์ "Global Object"์ ๋ํ์ฌ ์ ์๋ ๋ถ๋ถ์ด๋ค.
- ๊ธ๋ก๋ฒ ๊ฐ์ฒด๋ ๋จ ํ๋๋ง ์ ์ผํ๊ฒ ์กด์ฌํ๋ฉฐ, ์ด๋ ํ ์ปจํ ์คํธ๊ฐ ์คํ๋๊ธฐ ์ ์ ๋จผ์ ์์ฑ๋๋ค.
- ๊ธ๋ก๋ฒ ๊ฐ์ฒด๋ ๋ด๋ถ์ ์ผ๋ก ์์ฑ์๊ฐ ์์ผ๋ฉฐ, new๋ฅผ ์ด์ฉํด์ ์์ฑ์๋ก์ ์ฌ์ฉํ ์ ์๋ค.
- ๊ธ๋ก๋ฒ ๊ฐ์ฒด๋ ๋ด๋ถ์ ์ผ๋ก
[[Call]]ํจ์๊ฐ ์์ผ๋ฉฐ, ๊ธ๋ก๋ฒ ๊ฐ์ฒด๋ฅผ ํจ์๋ก์ ํธ์ถํ ์ ์๋ค. - ๊ธ๋ก๋ฒ ๊ฐ์ฒด์
[[Prototype]]์ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์๋ค. - ๊ธ๋ก๋ฒ ๊ฐ์ฒด๋ ์ถ๊ฐ๋ก ํ์ค์ ๋ช ์๋์ด ์๋ ์ด ์์ฑ๋ค ์ด์ธ์๋ ์ถ๊ฐ ์์ฑ๋ค์ด ์ ์๋ ์ ์์ผ๋ฉฐ, ๊ธ๋ก๋ฒ ๊ฐ์ฒด ์์ ์ ๋ค์ ์์ฑ์ผ๋ก ๊ฐ์ง๋ ๊ฒ๋ ํฌํจ๋ ์ ์๋ค. ์๋ฅผ ๋ค๋ฉด, HTML DOM์์ window ์์ฑ์ ๊ธ๋ก๋ฒ ๊ฐ์ฒด ์์ ์ ๋ํ๋ด๋ ์์ฑ์ด๋ค.
ECMAScript 2016 18 The Global Object
๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก window ๊ฐ์ฒด๋ฅผ ํ์ฉํ ์ ์๋ค.
- window ๊ฐ์ฒด๋ฅผ ํตํ ๊ธ๋ก๋ฒ ๋ณ์ ์ ๊ทผ
var myGlobal = "am i in window?";
console.log(window.myGlobal);
console.log(window["myGlobal"]);- window ๊ฐ์ฒด๋ฅผ ํตํ ๊ธ๋ก๋ฒ ํจ์ ํธ์ถ
function myGlobalFunction() {
alert("Global function invoked");
}
window["myGlobalFunction"]();
window["myGlobalFunction"].call();- window ๊ฐ์ฒด๋ฅผ ํตํ ๊ธ๋ก๋ฒ ํจ์ ์ ์
(function () {
window.myGlobalFunction = function() {
alert("Global function");
};
}());
myGlobalFunction();
myGlobalFunction.call();var ํค์๋๋ฅผ ํตํด์ ๋ณ์๋ฅผ ์ ์ํ๋ฉด ํ์ฌ ๋ณ์ํ๊ฒฝ์ ๋ณ์๋ฅผ ์์ฑํ๊ณ undefined๋ก ๊ฐ์ ์ด๊ธฐํํ๋ค.
var ํค์๋๋ฅผ ์ด์ฉํ์ง ์์ผ๋ฉด ํด๋น ๊ตฌ๋ฌธ์ด ์ง์ ์คํ๋๋ ์๊ฐ์ ๊ธ๋ก๋ฒ ๋ณ์๋ฅผ window ๊ฐ์ฒด์ ์์ฑ์ผ๋ก ์ถ๊ฐํ๋ค.
- var ํค์๋๋ก ๊ธ๋ก๋ฒ ๋ณ์ ์ ์
console.log("1: " + varExists + ", " + window.hasOwnProperty("varExists")); // undefined, true
var varExists = "Define a global variable with var keyword";
console.log("2: " + varExists);์ ๊ฒฐ๊ณผ๋ 1์์ varExists ๊ฐ์ undefined๊ฐ ๋์ค๊ณ , 2์์ ์ค์ ํ ๊ฐ์ด ๋ํ๋๋ค.
๋ฐ๋ผ์, window๋ ์ด๋ฏธ var ํค์๋๋ก ์ ์ํ ๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์์์ ์ ์ ์๋ค.
- var ํค์๋ ์์ด ๊ธ๋ก๋ฒ ๋ณ์ ์ ์
console.log("Exists?: " + window.hasOwnProperty("noVar"));
console.log("1: " + noVar);
noVar = "Define a global variable without var keyword";
console.log("2: " + noVar);์ ๊ฒฐ๊ณผ์์ noVar = "..." ๊ตฌ๋ฌธ์ด ์คํ๋๊ธฐ ์ ์๋ ๋ณ์๊ฐ window์ ์์ฑ์ผ๋ก ์ ์๋์ด ์์ง ์๋ค. ๋ฐ๋ผ์ noVar ๋ณ์์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด ์ ์๋์ง ์์ ๋ณ์๋ผ๋ ๋ ํผ๋ฐ์ค ์๋ฌ๊ฐ ์ผ์ด๋๋ค.
ECMAScript 2016 13.3.2 Variable Statement
๋ณ์ ํ๊ฒฝ์ด ์์ฑ๋๋ ๋ํ์ ์ธ ์๋ ํจ์์ด๋ค. ํจ์์ ์คํํ๊ฒฝ์ ์ด๊ธฐํํ๋ ๋จ๊ณ์ค 26.b์ 27.e์๋ ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ด ์๋ค.
์ ์ธ๋ ๋ชจ๋ ๋ณ์๋ช
์ instantiatedVarNames ๋ชฉ๋ก์ผ๋ก ๊ฒ์ฌํ์ฌ ์ ์๋์ด ์์ง ์๋ค๋ฉด, ํ์ฌ ํ๊ฒฝ์ var ํค์๋ ๋ฑ์ผ๋ก ์ ์๋ ๋ณ์๋ค์ ๊ฐ์
undefined๋ก ์ด๊ธฐํํ๋ค.
์ฌ๊ธฐ์ ์ ์ ์๋ ๊ฒ์, ํจ์์ ์์ค์ฝ๋์ธ code ์ ์ฒด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณ์๋ฅผ ์ ์ํ๊ธฐ ๋๋ฌธ์ var ํค์๋๋ก ์ ์ํ๋ ๋ณ์๋ ์์น๋ ์๋ฏธ๊ฐ ์๊ณ , ๋ณ์์ ์ด๊ธฐํ ์์น๋ง ์๋ฏธ๊ฐ ์๋ค๋ ์ ์ด๋ค. ๋ฐ๋ผ์ ์์ค์ฝ๋ ์ค๊ฐ์ด๋ if ๋ฑ์ผ๋ก ๋ถ๊ธฐํ ๋ var ํค์๋๋ก ๋ณ์๋ฅผ ๋ฐ๋ก ๊ตฌ๋ถํ์ฌ ์ ์ํ๋ ๊ฒ์
์ฑ๋ฅ์ ์๋ฌด๋ฐ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค.
ECMAScript 2016 9.2.12 FunctionDeclarationInstantiation
JSLint์์๋ ๋ชจ๋ ๋ณ์๋ฅผ var ํค์๋ ํ๋๋ก ๋ฌถ์ด์ ํจ์์ ๊ฐ์ฅ ์์ฒด์ ์ ์ํ๋ผ๊ณ ๊ถํ๋ค.
ํจ์๊ฐ ์์๋๋ ๋ถ๋ถ์ varํค์๋์ ํจ๊ป ๋ชจ๋ ๋ณ์๋ฅผ ์ ์ํ๋ฉด ๋ช ๊ฐ์ง ์ฅ์ ์ด ์๋ค.
- ์ด๊ธฐํ์ ์ค์ ์ต์ํ
- ๋ณ์๋ฅผ ์ด๊ธฐํํ์ง ์์ ๊ฒฝ์ฐ ๊ฒ์ฆ์์ ์ ์ธ์ ํ์ง ์์ ๊ฐ๊ณผ ๊ฐ์ "undefined"๋ฅผ ๋ฐํํ๋ค. ์ด๋ฌํ ์ด๊ธฐํ์ ๋ํ
ํด๋จผ ์๋ฌ๋ฅผ ์ค์ด๊ณ ๊ด๋ฆฌ๋ฅผ ์ฉ์ดํ๊ธฐ ์ํด ํจ์ ์๋จ์ ํ๋์var์ ๋ชจ์์ null๋ก ์ด๊ธฐํํ๋ ๊ฒ์ด ์ข๋ค.
- ํด๋น ์ค์ฝํ์์ ์ฌ์ฉํ๊ณ ์๋ ๋ณ์์ ๋ํ ๊ด๋ฆฌ ์ฉ์ด
- ์๋ฐ์คํฌ๋ฆฝํธ์์๋
var๋ฅผ ๋ถ์ฌ์ ์ ์ธํ์ง ์๊ณ ์ฌ์ฉํด๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๊ธฐ ๋๋ฌธ์, ์์ ์ค์ฝํ๋ ์ต์ ์ ๊ฒฝ์ฐ ๊ธ๋ก๋ฒ ๋ณ์๋ก ํ์ฉ๋์ด ํ๋ก๊ทธ๋จ ์ ์ฒด์ ์ํฅ์ ๋ฏธ์น ์ ์๋ค. ํจ์ ์๋จ์ ์ ์ธํ ๊ฒฝ์ฐ ์ค์ฝํ์ ๋ํ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํด์ง๋ค.
- ๋ฏธ๋ํผ์ผ์ด์ ์ต์ ํ
- ๋ฏธ๋ํผ์ผ์ด์ ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ค ์ต์ ํ ๊ธฐ๋ฒ์ด๋ค.
-
var๋ ํค์๋๋ผ์ ๋ฏธ๋ํผ์ผ์ด์ ์ ํตํด ๋์ด์ ์์ ํฌ๊ธฐ๋ก ์ค์ผ์ ์๋ ๋ฌธ์ ๊ฐ ์๋ค. ๋ฐ๋ผ์varํ๋์ ๋ณ์๋ฅผ ๋ฌถ์ด์ ์ ์ธํ๋ฉด ๋ฏธ๋ํผ์ผ์ด์ ์์๋ ์ ๋ฆฌํ๋ค.
๊ธ๋ก๋ฒ ๋ณ์๋ฅผ ์ต์ํํ ์ ์๋ ๋ฐฉ๋ฒ์ค ๋ํ์ ์ธ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
- ํด๋ก์ ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
- ๋ชจ๋/๋ค์์คํ์ด์ค ํจํด์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ๋๋ ๋ช ๊ฐ์ง ๊ธฐ์ค์ ๋ฐ๋ฅด๋ฉด ๋๋ค.
- DOM์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ๋ฃ๊ณ ๋ณ์์ ์ ๊ทผํด์ผ ํ๋ค -> ๋ชจ๋ ๋ฐฉ์
- ๋ค๋ฅธ ๊ฐ๋ฐ์์ ์ํธ์์ฉํ๋ ์์ค๋ฅผ ๋ง๋ ๋ค -> ๋ชจ๋ ๋ฐฉ์
- ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค -> ๋ชจ๋ ๋ฐฉ์
- ์ธ๋ถ์์ ์ ๊ทผํ ์ผ์ด ์๋ค -> ํด๋ก์ ๋ฐฉ์
- ์ ๋ชจ๋ฅด๊ฒ ๋ค -> ํด๋ก์ ๋ฐฉ์
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ณ์๊ฐ ์์ ์ค์ฝํ์ ์์ ๋ ๋ด๋ถ์ ์ผ๋ก ๋ณ์ ์ ์ ํ๊ฒฝ ํ์์ ์ฌ๊ท๋ก ์ํํ๋ค.
GetIdentifierReference() ํจ์๋ ๋ณ์ ์ ์ํ๊ฒฝ์์ ๋ณ์๋ช
์ ์ฐพ์๊ฐ ๋ ๋ด๋ถ์ ์ธ ๋์์ ์ ์ํ๊ณ ์๋ค.
์ฌ๊ธฐ์ envRec์ ํ๊ฒฝ ๋ ์ฝ๋์ ๋ณ์๊ฐ ์ ์๋์๋์ง ํ์ธํ ๋ค์, ์๋ค๋ฉด ์์ ํ๊ฒฝ์ผ๋ก ๊ฐ์ ๋ค์ ์ฌ๊ท์ ์ผ๋ก GetIdentifierReference() ํจ์๋ฅผ ํธ์ถํ๋ค.
๋ฐ๋ผ์ ์์ ์ค์ฝํ์ ์๋ ๋ณ์๋ฅผ ํ์ํ๋ ๊ฒ์ ์ปดํจํ
์์์ ์กฐ๊ธ ์๋ชจํ๋ค.
์์ ์ค์ฝํ ์ฒด์ธ์ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ์ผ๋ฐ์ ์ธ ์

ECMAScript 2016 8.1.2.1 GetIdentifierReference (lex, name, strict)
ํจ์๋ฅผ ์ฌ๊ท๋ก ํธ์ถํ๋ ๊ตฌ์ฑ์ ์ต์ ํํ๋ ค๋ฉด ์์ ์ค์ฝํ์ ์ ์๋ ๋ณ์๋ฅผ ํ์ ์ค์ฝํ์ ๋ก์ปฌ ๋ณ์๋ก ๋์ด๋ด๋ฆฌ๋๊ฒ์ด ์ข๋ค. ์ด๋ฌํ ์ค์ฝํ์ ๋ง์ฐฌ๊ฐ์ง๋ก, ๋ณ์์ ์์ฑ ๋ํ ํ ๋จ๊ณ ๋ค์ด๊ฐ ๋๋ง๋ค ์ปดํจํ ์์์ด ์กฐ๊ธ ์๋ชจ๋๋ค. ๋ฐ๋ผ์, ์ด ๋ํ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ก์ปฌ ๋ณ์๋ก ๋์ด์ฌ ์ ์๋ค๋ฉด ๋ก์ปฌ ๋ณ์๋ก ์ ์ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. (์์ฑ์ ์์ฑ์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ๋ฅผ ์ต์ํํ๊ธฐ)