1
0
mirror of https://github.com/adambard/learnxinyminutes-docs.git synced 2025-08-25 15:51:15 +02:00

change encoding of files

This commit is contained in:
wikibook
2013-08-13 15:47:49 +09:00
parent 04c0b273b0
commit cd104ee855
2 changed files with 363 additions and 363 deletions

View File

@@ -8,272 +8,272 @@ translators:
lang: ko-kr
---
<EFBFBD>ڹٽ<EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <20>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EAB7BB> <20><><EFBFBD><EFBFBD>ũ(Brendan Eich)<EFBFBD><EFBFBD> 1995<EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڹٽ<DAB9>ũ<EFBFBD><C5A9>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20>ܼ<EFBFBD><DCBC><EFBFBD> <20><>ũ<EFBFBD><C5A9>Ʈ <20><><EFBFBD><20><>ǥ<EFBFBD><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>,
<EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD>̼<EFBFBD><CCBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڹٸ<DAB9> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȣ<EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>п<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><E5BFA1>
<EFBFBD>ڹٺ<EFBFBD><EFBFBD><EFBFBD> <20>ξ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̰<EFBFBD> <20>ƽ<EFBFBD><C6BD>ϴ<EFBFBD>.
자바스크립트는 넷스케이프의 브렌던 아이크(Brendan Eich) 1995년에 만들었습니다.
원래 자바스크립트는 웹사이트를 위한 단순한 스크립트 언어를 목표로 만들어졌는데,
좀 더 복잡한 웹 애플리케이션을 만들기 위해 자바를 보완하는 역할이었지만
웹 페이지와의 긴밀한 상호작용과 브라우저에 대한 지원 기능 덕분에 웹 프론트엔드에서
자바보다 훨씬 더 보편적으로 쓰이게 됐습니다.
<EFBFBD>׷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڹٽ<DAB9>ũ<EFBFBD><C5A9>Ʈ<EFBFBD><C6AE> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ѵ<EFBFBD><D1B5><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>. <20><><EFBFBD><EFBFBD> ũ<><C5A9><EFBFBD><EFBFBD> V8 <20>ڹٽ<DAB9>ũ<EFBFBD><C5A9>Ʈ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> Node.js<6A><73> <20><><EFBFBD><EFBFBD> <20>α<20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
그렇지만 자바스크립트는 웹 브라우저에만 국한되지 않습니다. 구글 크롬의 V8 자바스크립트
엔진을 위한 독립형 런타임을 제공하는 Node.js는 점점 인기를 얻고 있습니다.
<EFBFBD>ǵ<EFBFBD><EFBFBD><EFBFBD> <20>ֽø<D6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰڽ<CFB0><DABD>ϴ<EFBFBD>! [@adambrenecki](https://twitter.com/adambrenecki)<EFBFBD><EFBFBD>
[adam@brenecki.id.au](mailto:adam@brenecki.id.au)<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
피드백 주시면 대단히 감사하겠습니다! [@adambrenecki](https://twitter.com/adambrenecki)
[adam@brenecki.id.au](mailto:adam@brenecki.id.au)를 통해 저와 만나실 수 있습니다.
```js
// <EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD> C<><43> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>. <20><> <20><>¥<EFBFBD><C2A5> <20>ּ<EFBFBD><D6BC><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD>,
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ּ<EFBFBD><D6BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǥ<EFBFBD><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD>
<EFBFBD><EFBFBD>ǥ <20><><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. */
// 주석은 C와 비슷합니다. 한 줄짜리 주석은 두 개의 슬래시로 시작하고,
/* 여러 줄 주석은 슬래시 별표로 시작해서
별표 슬래시로 끝납니다. */
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD>(;)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 구문은 세미콜론(;)으로 끝낼 수 있습니다.
doStuff();
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>׷<EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD>µ<EFBFBD>, Ư<><C6AF> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD>
// <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ԵDZ<D4B5> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
// 하지만 꼭 그럴 필요는 없는데, 특정 경우를 제외하고
// 새 줄이 시작할 때마다 세미콜론이 자동으로 삽입되기 때문입니다.
doStuff()
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰڽ<CFB0><DABD>ϴ<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>δ<EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><>Ÿ<EFBFBD><C5B8> <20><><EFBFBD>̵带 <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
// 여기서는 세미콜론을 생략하겠습니다. 세미콜론을 생략할지 여부는
// 개인적인 취향이나 프로젝트의 스타일 가이드를 따릅니다.
///////////////////////////////////
// 1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>ڿ<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 1. 숫자, 문자열, 연산자
// <EFBFBD>ڹٽ<EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ϳ<EFBFBD><CFB3><EFBFBD> <20><><EFBFBD><EFBFBD> Ÿ<><C5B8>(64<36><34>Ʈ IEEE 754 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD>
// <EFBFBD>ֽ<EFBFBD><EFBFBD>ϴ<EFBFBD>.
// 자바스크립트에는 단 하나의 숫자 타입(64비트 IEEE 754 배정도 숫자)만이
// 있습니다.
3 // = 3
1.5 // = 1.5
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
// 모든 기초 산술 연산은 기대한 대로 동작합니다.
1 + 1 // = 2
8 - 1 // = 7
10 * 2 // = 20
35 / 5 // = 7
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ե˴ϴ<CBB4>.
// 나누어 떨어지지 않는 나눗셈도 포함됩니다.
5 / 2 // = 2.5
// <EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>˴ϴ<CBB4>. float<61><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>
// 32<EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȣ<EFBFBD><C8A3> <20>ִ<EFBFBD> int<6E><74> <20><>ȯ<EFBFBD>˴ϴ<CBB4>.
// 비트 연산도 지원됩니다. float을 대상으로 비트 연산을 수행하면
// 32비트까지 부호가 있는 int로 변환됩니다.
1 << 2 // = 4
// <EFBFBD><EFBFBD>ȣ<EFBFBD><EFBFBD> <20>̿<EFBFBD><CCBF>ϸ<EFBFBD> <20><EFBFBD><ECBCB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 괄호를 이용하면 우선순위를 지정할 수 있습니다.
(1 + 3) * 2 // = 8
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڰ<EFBFBD> <20>ƴ<EFBFBD> Ư<><C6AF><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
Infinity // 1/0 1/0<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
-Infinity // -1/0<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
NaN // 0/0<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// 실제 숫자가 아닌 특별한 세 가지 값이 있습니다.
Infinity // 1/0 1/0과 같은 연산의 결과
-Infinity // -1/0과 같은 연산의 결과
NaN // 0/0과 같은 연산의 결과
// <EFBFBD>Ҹ<EFBFBD> Ÿ<>Ե<EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 불린 타입도 있습니다.
true
false
// <EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD> '<27><> "<22><> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
// 문자열은 '나 "로 생성합니다.
'abc'
"Hello, world"
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EABFA1> ! <20><>ȣ<EFBFBD><C8A3> <20>̿<EFBFBD><CCBF>մϴ<D5B4>.
// 부정 연산에는 ! 기호를 이용합니다.
!true // = false
!false // = true
// <EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ==
// 동일성 연산은 ==
1 == 1 // = true
2 == 1 // = false
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> !=
// 불일치 연산은 !=
1 != 1 // = false
2 != 1 // = true
// <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// 그 밖의 비교 연산
1 < 10 // = true
1 > 10 // = false
2 <= 2 // = true
2 >= 2 // = true
// <EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD> +<2B><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 문자열은 +로 연결할 수 있습니다.
"Hello " + "world!" // = "Hello world!"
// <EFBFBD>׸<EFBFBD><EFBFBD><EFBFBD> <<3C><> ><3E><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 그리고 <와 >로 비교할 수 있습니다.
"a" < "b" // = true
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȯ<EFBFBD><C8AF> <20><><EFBFBD><EFBFBD><EFBFBD>˴ϴ<CBB4>.
// 비교 시 타입 강제변환이 수행됩니다.
"5" == 5 // = true
// ===<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʴ´ٸ<C2B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// ===를 쓰지 않는다면 말이죠.
"5" === 5 // = false
// charAt<EFBFBD><EFBFBD> <20>̿<EFBFBD><CCBF>ϸ<EFBFBD> <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// charAt을 이용하면 문자열 내의 문자에 접근할 수 있습니다.
"This is a string".charAt(0)
// null<EFBFBD><EFBFBD> undefined<EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
null // <EFBFBD>ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ƴ<EFBFBD><C6B4><EFBFBD> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
undefined // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
// null undefined도 있습니다.
null // 의도적으로 값이 아님을 나타내는 데 사용합니다.
undefined // 값이 아직 설정되지 않음을 나타내는 데 사용합니다.
// null, undefinded, NaN, 0, ""<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD>, <20><> <20><><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Դϴ<D4B4>.
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30> <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD>, "0"<22><> <20><><EFBFBD>Դϴ<D4B4>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 == "0"<EFBFBD>̴<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
// null, undefinded, NaN, 0, ""은 거짓이며, 그 밖의 다른 모든 값은 참입니다.
// 참고로 0은 거짓이며, "0"은 참입니다(심지어 0 == "0"이더라도).
///////////////////////////////////
// 2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>迭, <20><>ü
// 2. 변수, 배열, 객체
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> var Ű<><C5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>. <20>ڹٽ<DAB9>ũ<EFBFBD><C5A9>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ䰡 <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. <20><><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD><D2B4><EFBFBD> <20><><EFBFBD><EFBFBD> = <20><><EFBFBD><EFBFBD> <20>ϳ<EFBFBD><CFB3><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
// 변수는 var 키워드로 선언합니다. 자바스크립트는 동적 타입 언어라서
// 타입을 지정할 필요가 없습니다. 값을 할당할 때는 = 문자 하나를 사용합니다.
var someVar = 5
// var Ű<EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾƵ<CABE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD><DFBB><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
// var 키워드를 지정하지 않아도 오류는 발생하지 않습니다.
someOtherVar = 10
// <EFBFBD>׷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ϶<C6B4>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>˴ϴ<CBB4>.
// 그렇지만 변수가 여러분이 정의한 유효범위가 아니라
// 전역 유효범위에 생성됩니다.
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD><D2B4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ä<><C3A4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> undefined<65><64> <20><><EFBFBD><EFBFBD><EFBFBD>˴ϴ<CBB4>.
// 값을 할당하지 않은 채로 선언한 변수는 undefined로 설정됩니다.
var someThirdVar // = undefined
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ǥ<><C7A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
someVar += 5 // someVar = someVar + 5;<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> someVar<EFBFBD><EFBFBD> 10.
someVar *= 10 // somVar<EFBFBD><EFBFBD> 100
// 변수에 수학 연산을 수행하는 축약형 표현은 다음과 같습니다.
someVar += 5 // someVar = someVar + 5;와 같음. 이제 someVar 10.
someVar *= 10 // somVar 100
// 1<EFBFBD><EFBFBD> <20><><EFBFBD>ϰų<CFB0> <20><><EFBFBD><EFBFBD> <20>ξ<EFBFBD> <20><> ª<><C2AA> ǥ<><C7A5><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
someVar++ // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> someVar<EFBFBD><EFBFBD> 101
someVar-- // <EFBFBD>ٽ<EFBFBD> 100<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ǵ<EFBFBD><C7B5>ư<EFBFBD>
// 1을 더하거나 빼는 훨씬 더 짧은 표현도 있습니다.
someVar++ // 이제 someVar 101
someVar-- // 다시 100으로 되돌아감
// <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
// 배열은 순차적인 임의 타입 값의 목록입니다.
var myArray = ["Hello", 45, true]
// <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3> <20>ѷ<EFBFBD><D1B7><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD><CCBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// <EFBFBD><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
// 배열의 멤버는 대괄호로 둘러싼 인덱스를 이용해 접근할 수 있습니다.
// 배열의 인덱스는 0부터 시작합니다.
myArray[1] // = 45
// <EFBFBD>ڹٽ<EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '<27><><EFBFBD><EFBFBD>'<27>̳<EFBFBD> '<27><>'<27><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
// <EFBFBD><EFBFBD>, Ű-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD><EFBFBD>Դϴ<D4B4>.
// 자바스크립트의 객체는 다른 언어의 '사전'이나 '맵'과 같습니다.
// 즉, 키-값 쌍으로 구성된 비순차 컬렉션입니다.
{key1: "Hello", key2: "World"}
// Ű<EFBFBD><EFBFBD> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȿ<EFBFBD><C8BF> <20>ڹٽ<DAB9>ũ<EFBFBD><C5A9>Ʈ <20>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>. <20><><EFBFBD><EFBFBD> <20> Ÿ<><C5B8><EFBFBD>̵<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 키는 문자열이지만 유효한 자바스크립트 식별자일 경우
// 작은따옴표는 필요하지 않습니다. 값은 어떤 타입이든 사용할 수 있습니다.
var myObj = {myKey: "myValue", "my other key": 4}
// <EFBFBD><EFBFBD>ü <20>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD><CCBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 객체 속성에도 인덱스를 이용해 접근할 수 있습니다.
myObj["my other key"] // = 4
// <EFBFBD>Ǵ<EFBFBD> Ű<><C5B0> <20><>ȿ<EFBFBD><C8BF> <20>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> ǥ<><C7A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD><CCBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 또는 키가 유효한 식별자일 경우 점 표기법을 이용해 접근할 수 있습니다.
myObj.myKey // = "myValue"
// <EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>. <20><>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰų<CFB0> <20><> Ű<><C5B0> <20>߰<EFBFBD><DFB0><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 객체는 변경 가능합니다. 즉, 값을 변경하거나 새 키를 추가할 수 있습니다.
myObj.myThirdKey = true
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD> <20>ϸ<EFBFBD> undefined<65><64> <20><>ȯ<EFBFBD>˴ϴ<CBB4>.
// 설정되지 않은 값에 접근하려고 하면 undefined가 반환됩니다.
myObj.myFourthKey // = undefined
///////////////////////////////////
// 3. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// 3. 로직과 제어 구조
// if <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
// if 구조는 여러분이 예상한 대로 동작합니다.
var count = 1
if (count == 3){
// count<EFBFBD><EFBFBD> 3<><33> <20><><EFBFBD><EFBFBD> <20>򰡵<EFBFBD>
// count가 3일 경우 평가됨
} else if (count == 4) {
// count<EFBFBD><EFBFBD> 4<><34> <20><><EFBFBD><EFBFBD> <20>򰡵<EFBFBD>
// count가 4일 경우 평가됨
} else {
// count<EFBFBD><EFBFBD> 3<>̳<EFBFBD> 4<><34> <20>ƴ<EFBFBD> <20><><EFBFBD><20>򰡵<EFBFBD>
// count가 3이나 4가 아닌 경우에 평가됨
}
// while<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
// while도 마찬가지입니다.
while (true) {
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!
// 무한 루프!
}
// do-while <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׻<EFBFBD> <20>ּ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ȴٴ<C8B4> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>
// while <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
// do-while 문은 항상 최소 한 번은 실행된다는 점을 제외하면
// while 문과 비슷합니다.
var input
do {
input = getInput()
} while (!isValid(input))
// for <EFBFBD><EFBFBD><EFBFBD><EFBFBD> C<><43> <20>ڹ<EFBFBD><DAB9><EFBFBD> for <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
// <EFBFBD>ʱ<EFBFBD>ȭ<EFBFBD><EFBFBD>; <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// for 문은 C와 자바의 for 문과 같습니다.
// 초기화식; 지속 조건; 증감식
for (var i = 0; i < 5; i++){
// 5<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 5번 실행됨
}
// &&<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> and<6E>̰<EFBFBD> ||<7C><> <20><><EFBFBD><EFBFBD> or<6F>Դϴ<D4B4>.
// &&는 논리 and이고 ||는 논리 or입니다.
if (house.size == "big" && house.colour == "blue"){
house.contains = "bear"
}
if (colour == "red" || colour == "blue"){
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̰ų<CCB0> <20>Ķ<EFBFBD>
// 색은 빨강이거나 파랑
}
// &&<EFBFBD><EFBFBD> ||<EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"<22><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴµ<CFB4>, <20><EFBFBD><E2BABB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
// && ||은 "단축 평가"를 수행하는데, 기본값을 설정할 때 유용합니다.
var name = otherName || "default"
///////////////////////////////////
// 4. <EFBFBD>Լ<EFBFBD>, <20><>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD>, Ŭ<><C5AC><EFBFBD><EFBFBD>
// 4. 함수, 유효범위, 클로저
// <EFBFBD>ڹٽ<EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ <20>Լ<EFBFBD><D4BC><EFBFBD> function Ű<><C5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
// 자바스크립트 함수는 function 키워드로 선언합니다.
function myFunction(thing){
return thing.toUpperCase()
}
myFunction("foo") // = "FOO"
// <EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD> "<22>͸<EFBFBD>"<22><><EFBFBD><EFBFBD>, <20><> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 함수는 "익명"으로, 즉 이름 없이 정의할 수도 있습니다.
function(thing){
return thing.toLowerCase()
}
// (<EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>)
// (함수를 가리키는 이름이 없기 때문에 함수를 호출할 수 없습니다)
// <EFBFBD>ڹٽ<EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ <20>Լ<EFBFBD><D4BC><EFBFBD> <20>ϱ<EFBFBD> <20><>ü<EFBFBD>̹Ƿ<CCB9> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ҵ<EFBFBD><D2B4>ϰ<EFBFBD>
// <EFBFBD>ٸ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD>ڷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>. <20><><EFBFBD><EFBFBD>, <20>̺<EFBFBD>Ʈ <20>ڵ鷯<DAB5><E9B7AF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// 자바스크립트 함수는 일급 객체이므로 다른 변수에 재할당하고
// 다른 함수에 인자로 전달할 수 있습니다. 가령, 이벤트 핸들러를 만들 경우
function myFunction(){
// <EFBFBD><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD> 5<><35> <20><><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD>
// 이 코드는 5초 내에 호출됨
}
setTimeout(myFunction, 5000)
// <EFBFBD>ٸ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ۼ<EFBFBD><DBBC><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 다른 함수를 호출할 때 직접적으로 함수 구문을 작성할 수도 있습니다.
setTimeout(function myFunction(){
// <EFBFBD><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD> 5<><35> <20><><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD>
// 이 코드는 5초 내에 호출됨
}, 5000)
// <EFBFBD>ڹٽ<EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD> <20><>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// <EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC><EFBFBD><EFBFBD> <20><>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
// 자바스크립트에는 함수 유효범위가 있습니다.
// 함수는 자체적인 유효범위를 가지지만 다른 블록은 유효범위를 가지지 않습니다.
if (true){
var i = 5
}
i // = 5 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EEBFA1><EFBFBD><EFBFBD> undefined<EFBFBD><EFBFBD> <20>ƴմϴ<D5B4>.
i // = 5 - 블록 유효범위를 지원하는 언어에서는 undefined가 아닙니다.
// <EFBFBD>̰<EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20>͸<EFBFBD> <20>Լ<EFBFBD>"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD>µ<EFBFBD>,
// <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ӽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
// 이것은 "즉시 실행되는 익명 함수"라는 공통 패턴으로 이어지는데,
// 이 패턴은 임시 변수가 전역 유효범위로 유출되는 것을 방지합니다.
(function(){
var temporary = 5
// '<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü'<27><> <20>Ҵ<EFBFBD><D2B4>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִµ<D6B4>,
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC> <20>׻<EFBFBD> 'window'<27>Դϴ<D4B4>. <20><><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC>
// Node.js<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD> ȯ<><EFBFBD><E6BFA1><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// '전역 객체'에 할당하는 식으로 전역 유효범위에 접근할 수 있는데,
// 브라우저에서 전역 객체는 항상 'window'입니다. 전역 객체는
// Node.js와 같은 브라우저가 아닌 환경에서는 다른 이름일 수도 있습니다.
window.permanent = 10
// <EFBFBD>Ǵ<EFBFBD> <20>տ<EFBFBD><D5BF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ߴٽ<DFB4><D9BD><EFBFBD> var Ű<><C5B0><EFBFBD><20><> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 또는 앞에서 언급했다시피 var 키워드를 뺄 수도 있습니다.
permanent2 = 15
})()
temporary // ReferenceError <EFBFBD>߻<EFBFBD>
temporary // ReferenceError 발생
permanent // = 10
permanent2 // = 15
// <EFBFBD>ڹٽ<EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ϳ<EFBFBD><CFB3><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>(closure)<EFBFBD>Դϴ<EFBFBD>.
// <EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> <20>Լ<EFBFBD> <20>ȿ<EFBFBD><C8BF><EFBFBD> <20><><EFBFBD>ǵǸ<C7B5> <20><><EFBFBD>ʿ<EFBFBD> <20><><EFBFBD>ǵ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20>ٱ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 자바스크립트의 강력한 기능 중 하나는 클로저(closure)입니다.
// 함수가 다른 함수 안에서 정의되면 안쪽에 정의된 함수는 바깥 함수의
// 모든 변수에 접근할 수 있습니다.
function sayHelloInFiveSeconds(name){
var prompt = "Hello, " + name + "!"
function inner(){
alert(prompt)
}
setTimeout(inner, 5000)
// setTimeout<EFBFBD><EFBFBD> <20>񵿱<EFBFBD><F1B5BFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϹǷ<CFB9> <20><> <20>Լ<EFBFBD><D4BC><EFBFBD> 5<><35> <20><><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ĩ<EFBFBD>ϴ<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5<>ʰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> inner<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// prompt<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// setTimeout은 비동기적으로 동작하므로 이 함수는 5초 동안
// 기다리지 않고 실행을 마칩니다. 하지만 5초가 지나면 inner에서도
// prompt의 값에 접근할 수 있습니다.
}
sayHelloInFiveSeconds("Adam") // will open a popup with "Hello, Adam!" in 5s
///////////////////////////////////
// 5. <EFBFBD><EFBFBD>ü <20><>ȭ; <20><><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8>
// 5. 객체 심화; 생성자와 프로토타입
// <EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 객체는 함수를 포함할 수 있습니다.
var myObj = {
myFunc: function(){
return "Hello world!"
@@ -281,8 +281,8 @@ var myObj = {
}
myObj.myFunc() // = "Hello world!"
// <EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD>Ǹ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> this Ű<><C5B0><EFBFBD><20>̿<EFBFBD><CCBF><EFBFBD>
// <EFBFBD>ش<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 객체에 포함된 함수가 호출되면 함수에서는 this 키워드를 이용해
// 해당 함수가 포함된 객체에 접근할 수 있습니다.
myObj = {
myString: "Hello world!",
myFunc: function(){
@@ -291,22 +291,22 @@ myObj = {
}
myObj.myFunc() // = "Hello world!"
// <EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD>ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ƴ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD>Ǵ<EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>. <20>׷<EFBFBD><D7B7><EFBFBD> <20>Ʒ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><>ü <20><><EFBFBD>ؽ<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>
// ȣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
// 여기서 설정한 것은 함수가 정의된 곳이 아닌 함수가 호출되는
// 방식과 관련이 있습니다. 그래서 아래 함수는 객체 컨텍스트에서
// 호출되지 않으면 동작하지 않습니다.
var myFunc = myObj.myFunc
myFunc() // = undefined
// <EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><>ü<EFBFBD><C3BC> <20>Ҵ<EFBFBD><D2B4>ϰ<EFBFBD> this<69><73> <20><><EFBFBD><EFBFBD> <20>ش<EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// <EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>ü<EFBFBD><C3BC> <20>߰<EFBFBD><DFB0><EFBFBD><EFBFBD><EFBFBD> <20>ʾҴ<CABE><D2B4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
// 반대로 함수는 객체에 할당하고 this를 통해 해당 객체에 접근할 수 있습니다.
// 함수를 정의할 때 객체에 추가되지 않았더라도 마찬가지입니다.
var myOtherFunc = function(){
return this.myString.toUpperCase()
}
myObj.myOtherFunc = myOtherFunc
myObj.myOtherFunc() // = "HELLO WORLD!"
// new Ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD>ϸ<EFBFBD> <20><><EFBFBD>ο<EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD> this<69><73> <20><><EFBFBD><EFBFBD>
// <EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ְ<EFBFBD> <20>˴ϴ<CBB4>. <20>̷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD> <20>մϴ<D5B4>.
// new 키워드로 함수를 호출하면 새로운 객체가 생성되고 this를 통해
// 함수에서 사용할 수 있게 됩니다. 이런 식으로 설계된 함수를 생성자라 합니다.
var MyConstructor = function(){
this.myNumber = 5
@@ -314,14 +314,14 @@ var MyConstructor = function(){
myNewObj = new MyConstructor() // = {myNumber: 5}
myNewObj.myNumber // = 5
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڹٽ<DAB9>ũ<EFBFBD><C5A9>Ʈ <20><>ü<EFBFBD><C3BC> 'prototype'<27><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>. <20><20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> <20><><EFBFBD>η<EFBFBD>Ÿ<EFBFBD>Կ<EFBFBD><D4BF><EFBFBD>
// <EFBFBD>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC> ã<><C3A3><EFBFBD>ϴ<EFBFBD>.
// 모든 자바스크립트 객체는 'prototype'을 가지고 있습니다. 어떤 객체에 대해
// 실제 객체에는 존재하지 않는 프로퍼티에 접근하면 인터프리터는 프로로타입에서
// 해당 프로퍼티를 찾습니다.
// <EFBFBD>Ϻ<EFBFBD> <20>ڹٽ<DAB9>ũ<EFBFBD><C5A9>Ʈ <20><><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> __proto__<5F><5F><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>
// <EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD>Կ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<20>մϴ<D5B4>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD> <20>̷<EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD> __proto__<5F><5F> ǥ<>ؿ<EFBFBD> <20><><EFBFBD>Ե<EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>. <20><><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> ǥ<><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD>ϴ<EFBFBD>.
// 일부 자바스크립트 구현체에서는 __proto__라는 마법의 프로퍼티로
// 객체의 프로토타입에 접근하는 것을 허용하기도 합니다. 프로토타입을
// 설명하기에는 이런 내용도 도움되겠지만 __proto__는 표준에 포함돼
// 있지 않습니다. 나중에 프로토타입을 사용하는 표준 방법을 살펴보겠습니다.
var myObj = {
myString: "Hello world!",
}
@@ -334,37 +334,37 @@ var myPrototype = {
myObj.__proto__ = myPrototype
myObj.meaningOfLife // = 42
// <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>մϴ<D5B4>.
// 이 방법은 함수에도 통합니다.
myObj.myFunc() // = "hello world!"
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD>Կ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> ã<><C3A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>˴ϴ<CBB4>.
// 물론 프로퍼티가 프로토타입에 존재하지 않으면
// 프로토타입의 프로토타입을 찾는 식으로 진행됩니다.
myPrototype.__proto__ = {
myBoolean: true
}
myObj.myBoolean // = true
// <EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ͼ<CFBE><EEB3AA> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>. <20><> <20><>ü<EFBFBD><C3BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD>Կ<EFBFBD> <20><><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>. <20>̴<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ݿ<EFBFBD><DDBF>ȴٴ<C8B4> <20>ǹ<EFBFBD><C7B9>Դϴ<D4B4>.
// 여기서 복사는 일어나지 않습니다. 각 객체에는 프로토타입에 대한
// 참조가 보관돼 있습니다. 이는 프로토타입을 변경하면 변경사항이
// 모든 곳에 반영된다는 의미입니다.
myPrototype.meaningOfLife = 43
myObj.meaningOfLife // = 43
// <EFBFBD>տ<EFBFBD><EFBFBD><EFBFBD> __proto__<EFBFBD><EFBFBD> ǥ<>ؿ<EFBFBD> <20><><EFBFBD>Ե<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʴٰ<CAB4> <20>̾߱<CCBE><DFB1>ߴµ<DFB4>,
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> ǥ<><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ư<><C6AF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ο<EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 앞에서 __proto__가 표준에 포함돼 있지 않다고 이야기했는데,
// 기존 객체의 프로토타입을 변경하는 표준 방법은 없습니다.
// 하지만 특정 프로토타입을 가지고 새로운 객체를 생성하는 두 가지
// 방법이 있습니다.
// ù <20><>° <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Object.create<EFBFBD><EFBFBD> <20>̿<EFBFBD><CCBF>ϴ<EFBFBD> <20><><EFBFBD>ε<EFBFBD>,
// Object.create<EFBFBD><EFBFBD> <20>ֱٿ<D6B1> <20>ڹٽ<DAB9>ũ<EFBFBD><C5A9>Ʈ<EFBFBD><C6AE> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD>̶<EFBFBD><CCB6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD> <20>̿<EFBFBD><CCBF><EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ƴմϴ<D5B4>.
// 첫 번째 방법은 Object.create를 이용하는 것인데,
// Object.create는 최근에 자바스크립트에 추가된 것이라서 아직까지
// 모든 구현체에서 이용할 수 있는 것은 아닙니다.
var myObj = Object.create(myPrototype)
myObj.meaningOfLife // = 43
// <EFBFBD><EFBFBD> <20><>° <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>𼭳<EFBFBD> <20><><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD> prototype<EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>. <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> *<2A>ƴϰ<C6B4>* <20><><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD> new Ű<><C5B0><EFBFBD><20>̿<EFBFBD><CCBF><EFBFBD>
// <EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>ο<EFBFBD> <20><>ü<EFBFBD><C3BC> <20>޴<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD>Դϴ<D4B4>.
// 두 번째 방법은 어디서나 통하는 방법인데, 생성자와 관련이 있습니다.
// 생성자에는 prototype이라는 프로퍼티가 있습니다. 이 프로퍼티는
// 생성자 함수 자체의 프로토타입이 *아니고* 생성자와 new 키워드를 이용해
// 객체가 생성될 때 새로운 객체가 받는 프로토타입입니다.
myConstructor.prototype = {
getMyNumber: function(){
return this.myNumber
@@ -373,63 +373,63 @@ myConstructor.prototype = {
var myNewObj2 = new myConstructor()
myNewObj2.getMyNumber() // = 5
// <EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ÿ<>Կ<EFBFBD><D4BF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 문자열과 숫자와 같은 내장 타입에도 동등한 래퍼 객체를
// 생성하는 생성자가 있습니다.
var myNumber = 12
var myNumberObj = new Number(12)
myNumber == myNumberObj // = true
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ȯ<EFBFBD><C8AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
// 하지만 정확히 같지는 않습니다.
typeof(myNumber) // = 'number'
typeof(myNumberObj) // = 'object'
myNumber === myNumberObj // = false
if (0){
// 0<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD> <20><> <20>ڵ<EFBFBD><DAB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
// 0은 거짓이라서 이 코드는 실행되지 않습니다.
}
if (Number(0)){
// Number(0)<EFBFBD><EFBFBD> <20><><EFBFBD>̶<EFBFBD><CCB6><EFBFBD> <20><> <20>ڵ<EFBFBD><DAB5><EFBFBD> *<2A><><EFBFBD><EFBFBD><EFBFBD>˴ϴ<CBB4>*.
// Number(0)은 참이라서 이 코드는 *실행됩니다*.
}
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC> <20>Ϲ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 하지만 래퍼 객체와 일반 내장 함수는 프로토타입을 공유하기 때문에
// 가령 문자열에 실제로 기능을 추가할 수 있습니다.
String.prototype.firstCharacter = function(){
return this.charAt(0)
}
"abc".firstCharacter() // = "a"
// <EFBFBD>̷<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڹٽ<DAB9>ũ<EFBFBD><C5A9>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڹٽ<DAB9>ũ<EFBFBD><C5A9>Ʈ<EFBFBD><C6AE>
// <EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(polyfilling)"<22><> <20><><EFBFBD><EFBFBD> <20>̿<EFBFBD><CCBF>ǹǷ<C7B9>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ȯ<><EFBFBD><E6BFA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 이러한 사실은 기존 자바스크립트 버전에서 자바스크립트의
// 새로운 기능을 구현하는 "폴리필(polyfilling)"에 자주 이용되므로
// 오래된 버전의 브라우저와 같이 기존 환경에서 사용될 수 있습니다.
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, Object.create<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ƴ϶<C6B4><CFB6><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ʒ<EFBFBD><C6B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD><CCBF><EFBFBD> Object.create<74><65> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
// 예를 들어, Object.create가 모든 구현체에서 사용 가능한 것은 아니라고
// 했지만 아래의 폴리필을 이용해 Object.create를 여전히 사용할 수 있습니다.
if (Object.create === undefined){ // don't overwrite it if it exists
Object.create = function(proto){
// <EFBFBD>ùٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ӽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD> <20><><EFBFBD><EFBFBD>
// 올바른 프로토타입을 가지고 임시 생성자를 만듬
var Constructor = function(){}
Constructor.prototype = proto
// <EFBFBD>׷<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ӽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD> <20>̿<EFBFBD><CCBF><EFBFBD> <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD>
// 그런 다음 임시 생성자를 이용해 새로운 적절한 프로토타입을
// 포함한 객체를 생성
return new Constructor()
}
}
```
## <EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD> <20>ڷ<EFBFBD>
## 기타 참고 자료
[<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE>ũ](https://developer.mozilla.org/en-US/docs/Web/JavaScript)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ڹٽ<EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD><C7B8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>. <20><><EFBFBD>Ҿ<EFBFBD> <20><>Ű <20><><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BFA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
[모질라 개발자 네트워크](https://developer.mozilla.org/en-US/docs/Web/JavaScript)에서는
자바스크립트에 대한 훌륭한 문서를 제공합니다. 더불어 위키 형식이라서 좀 더 많은 사항을
배우게 되면 여러분만의 지식을 공유함으로써 다른 사람들에게 도움을 줄 수도 있습니다.
MDN<EFBFBD><EFBFBD> ['<EFBFBD>ڹٽ<EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>Թ<EFBFBD>'](https://developer.mozilla.org/ko/docs/A_re-introduction_to_JavaScript)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><20>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڼ<EFBFBD><DABC><EFBFBD> <20>ٷ<EFBFBD><D9B7><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>. <20><> <20>ڷῡ<DAB7><E1BFA1><EFBFBD><EFBFBD> <20>ڹٽ<DAB9>ũ<EFBFBD><C5A9>Ʈ <20><><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC>
<EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD>ϴ<EFBFBD>. <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڹٽ<DAB9>ũ<EFBFBD><C5A9>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʹٸ<CDB4>
[<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü <20><><EFBFBD><EFBFBD>(Document Object Model)](https://developer.mozilla.org/en-US/docs/Using_the_W3C_DOM_Level_1_Core)<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20>ٶ<EFBFBD><D9B6>ϴ<EFBFBD>.
MDN ['자바스크립트 재입문'](https://developer.mozilla.org/ko/docs/A_re-introduction_to_JavaScript)에서는
여기서 다룬 개념의 상당수를 더욱 자세히 다루고 있습니다. 이 자료에서는 자바스크립트 언어 자체에
대해서만 상당히 신중하게 다뤘습니다. 웹 페이지에서 자바스크립트를 사용하는 방법을 배우고 싶다면
[문서 객체 모델(Document Object Model)](https://developer.mozilla.org/en-US/docs/Using_the_W3C_DOM_Level_1_Core)
관해 배우는 것으로 시작하길 바랍니다.
[<EFBFBD>ڹٽ<EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>](http://bonsaiden.github.io/JavaScript-Garden/)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڹٽ<DAB9>ũ<EFBFBD><C5A9>Ʈ <20><><EFBFBD><EFBFBD><EEBFA1>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD> <20><><EFBFBD><EFBFBD> <20>κе<CEBA><D0B5><EFBFBD> <20>ɵ<EFBFBD> <20>ְ<EFBFBD> <20>ٷ<EFBFBD><D9B7>ϴ<EFBFBD>.
[자바스크립트 가든](http://bonsaiden.github.io/JavaScript-Garden/)에서는 자바스크립트 언어에서
직관에 어긋나는 모든 부분들을 심도 있게 다룹니다.
<EFBFBD><EFBFBD><EFBFBD>Ҿ<EFBFBD> <20><> <20>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E2BFA9> <20>е<EFBFBD><D0B5><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20>Ϻδ<CFBA> <20><> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>ִ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>(Louie Dihn)<EFBFBD><EFBFBD> <20><><EFBFBD>̽<EFBFBD> Ʃ<><EFBFBD><E4B8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE>ũ<EFBFBD><C5A9> <20>ִ<EFBFBD>
[<EFBFBD>ڹٽ<EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ Ʃ<><EFBFBD><E4B8AE>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript)<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
더불어 이 글에 직접적으로 기여한 분들로, 내용 중 일부는 이 사이트에 있는
루이 딘(Louie Dihn)의 파이썬 튜토리얼과 모질라 개발자 네트워크에 있는
[자바스크립트 튜토리얼](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript)을 참고했습니다.