diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:17 -0500 |
commit | da78a9e329e272dedb2400b79a3bdeebff387d47 (patch) | |
tree | e6ef8aa7c43556f55ddfe031a01cf0a8fa271bfe /files/ko/web/javascript/reference/statements/const | |
parent | 1109132f09d75da9a28b649c7677bb6ce07c40c0 (diff) | |
download | translated-content-da78a9e329e272dedb2400b79a3bdeebff387d47.tar.gz translated-content-da78a9e329e272dedb2400b79a3bdeebff387d47.tar.bz2 translated-content-da78a9e329e272dedb2400b79a3bdeebff387d47.zip |
initial commit
Diffstat (limited to 'files/ko/web/javascript/reference/statements/const')
-rw-r--r-- | files/ko/web/javascript/reference/statements/const/index.html | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/files/ko/web/javascript/reference/statements/const/index.html b/files/ko/web/javascript/reference/statements/const/index.html new file mode 100644 index 0000000000..1cbd7ea7aa --- /dev/null +++ b/files/ko/web/javascript/reference/statements/const/index.html @@ -0,0 +1,136 @@ +--- +title: const +slug: Web/JavaScript/Reference/Statements/const +tags: + - ECMAScript 2015 + - JavaScript + - Reference + - Statement + - constants +translation_of: Web/JavaScript/Reference/Statements/const +--- +<div>{{jsSidebar("Statements")}}</div> + +<p><strong><code>const</code> 선언</strong>은 블록 범위의 상수를 선언합니다. 상수의 값은 재할당할 수 없으며 다시 선언할 수도 없습니다.</p> + +<div>{{EmbedInteractiveExample("pages/js/statement-const.html")}}</div> + + + +<h2 id="구문">구문</h2> + +<pre class="syntaxbox">const <em>name1 = <em>value1 [</em>, <em>name2</em> = <em>value2</em><em> [</em>, ... [</em>, <em>nameN</em> = <em>valueN]]]</em>;</pre> + +<dl> + <dt><code>nameN</code></dt> + <dd>상수의 이름. 아무 유효한 {{Glossary("identifier", "식별자")}}를 사용할 수 있습니다.</dd> + <dt><code>valueN</code></dt> + <dd>상수의 값. 아무 유효한 <a href="/ko/docs/Web/JavaScript/Guide/Expressions_and_Operators#표현식">표현식</a>이나 가능합니다.</dd> +</dl> + +<h2 id="설명">설명</h2> + +<p>이 선언은 선언된 함수에 전역 또는 지역일 수 있는 상수를 만듭니다. 상수 초기자(initializer)가 필요합니다. 즉 선언되는 같은 문에 그 값을 지정해야 합니다(이는 나중에 변경될 수 없는 점을 감안하면 말이 됩니다).</p> + +<p>상수는 <code><a href="/ko/docs/Web/JavaScript/Reference/Statements/let">let</a></code> 문을 사용하여 정의된 변수와 마찬가지로 블록 범위(block-scope)입니다. 상수의 값은 재할당을 통해 바뀔 수 없고 재선언될 수 없습니다.</p> + +<p><code><a href="/ko/docs/Web/JavaScript/Reference/Statements/let">let</a></code>에 적용한 "<a href="/ko/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone_and_errors_with_let" title="temporal dead zone">일시적 사각 지대</a>"에 관한 모든 고려는, <code>const</code>에도 적용합니다.</p> + +<p>상수는 같은 범위의 상수 또는 변수와 그 이름을 공유할 수 없습니다.</p> + +<h2 id="예제">예제</h2> + +<p>다음 예제는 상수가 어떻게 동작하는지 보입니다. 브라우저 콘솔에서 따라해보세요.</p> + +<pre class="brush:js">// 주의: 상수 선언에는 대소문자 모두 사용할 수 있지만, +// 일반적인 관습은 모두 대문자를 사용하는 것입니다. + +// MY_FAV를 상수로 정의하고 그 값을 7로 함 +const MY_FAV = 7; + +// 에러가 발생함 +MY_FAV = 20; + +// 7 출력 +console.log("my favorite number is: " + MY_FAV); + +// 상수를 재선언하려는 시도는 오류 발생 - Uncaught SyntaxError: Identifier 'MY_FAV' has already been declared +const MY_FAV = 20; + +// MY_FAV라는 이름은 위에서 상수로 예약되어 있어서 역시 실패함. +var MY_FAV = 20; + +<code>// 역시 오류가 발생함 +let MY_FAV = 20; + +// 블록 범위의 특성을 아는게 중요 +if (MY_FAV === 7) { + // 블록 범위로 지정된 MY_FAV 라는 변수를 만드므로 괜찮습니다 + // (let으로 const 변수가 아닌 블록 범위를 선언하는 것과 똑같이 동작합니다) + let MY_FAV = 20; + + // MY_FAV는 이제 20입니다 + console.log('my favorite number is ' + MY_FAV); + + // 이 선언은 전역으로 호이스트되고 에러가 발생합니다. + var MY_FAV = 20; +} + +// MY_FAV는 여전히 7 +console.log('my favorite number is ' + MY_FAV); + +// const 선언시에 초기값을 생략해서 오류 발생 +const FOO; + +// const는 오브젝트에도 잘 동작합니다 +const MY_OBJECT = {'key': 'value'}; + +// 오브젝트를 덮어쓰면 오류가 발생합니다 +MY_OBJECT = {'OTHER_KEY': 'value'}; + +// 하지만 오브젝트의 키는 보호되지 않습니다. +// 그러므로 아래 문장은 문제없이 실행됩니다 +MY_OBJECT.key = 'otherValue'; // 오브젝트를 변경할 수 없게 하려면 Object.freeze() 를 사용해야 합니다 + +// 배열에도 똑같이 적용됩니다 +const MY_ARRAY = []; +// 배열에 아이템을 삽입하는 건 가능합니다 +MY_ARRAY.push('A'); // ["A"] +// 하지만 변수에 새로운 배열을 배정하면 에러가 발생합니다 +MY_ARRAY = ['B']</code></pre> + +<h2 id="명세">명세</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">명세</th> + <th scope="col">상태</th> + <th scope="col">설명</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-let-and-const-declarations', 'Let and Const Declarations')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>초기 정의.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-let-and-const-declarations', 'Let and Const Declarations')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="브라우저_호환성">브라우저 호환성</h2> + + + +<p>{{Compat("javascript.statements.const")}}</p> + +<h2 id="같이_보기">같이 보기</h2> + +<ul> + <li><a href="/ko/docs/Web/JavaScript/Reference/Statements/var"><code>var</code></a></li> + <li><a href="/ko/docs/Web/JavaScript/Reference/Statements/let"><code>let</code></a></li> + <li><a href="/ko/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Constants">JavaScript 안내서의 상수</a></li> +</ul> |