From da78a9e329e272dedb2400b79a3bdeebff387d47 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:17 -0500 Subject: initial commit --- files/ko/glossary/primitive/index.html | 125 +++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 files/ko/glossary/primitive/index.html (limited to 'files/ko/glossary/primitive/index.html') diff --git a/files/ko/glossary/primitive/index.html b/files/ko/glossary/primitive/index.html new file mode 100644 index 0000000000..8f12b18da8 --- /dev/null +++ b/files/ko/glossary/primitive/index.html @@ -0,0 +1,125 @@ +--- +title: 원시 값 +slug: Glossary/Primitive +tags: + - CodingScripting + - Glossary + - JavaScript +translation_of: Glossary/Primitive +--- +

{{Glossary("JavaScript")}}에서 원시 값(primitive, 또는 원시 자료형)이란 {{Glossary("object", "객체")}}가 아니면서 {{glossary("method", "메서드")}}도 가지지 않는 데이터입니다. 원시 값에는 6종류, {{Glossary("string")}}, {{Glossary("number")}}, {{glossary("bigint")}}, {{Glossary("boolean")}}, {{Glossary("undefined")}}, {{Glossary("symbol")}}이 존재합니다. 겉보기엔 원시 값처럼 보이는 {{glossary("null")}}도 있지만, 사실 모든 {{jsxref("Object")}}, 모든 구조화된 자료형은 프로토타입 체인에 따라 null의 자손입니다.

+ +

대부분의 경우, 원시 값은 언어 구현체의 가장 저급(low level) 단계에서 나타냅니다.

+ +

모든 원시 값은 불변하여 변형할 수 없습니다. 원시 값 자체와, 원시값을 할당한 변수를 혼동하지 않는 것이 중요합니다. 변수는 새로운 값을 다시 할당할 수 있지만, 이미 생성한 원시 값은 객체, 배열, 함수와는 달리 변형할 수 없습니다.

+ +

예제

+ +

다음 예제는 원시 값이 불변함을 이해할 때 도움이 됩니다.

+ +

JavaScript

+ +
// 문자열 메서드는 문자열을 변형하지 않음
+var bar = "baz";
+console.log(bar);        // baz
+bar.toUpperCase();
+console.log(bar);        // baz
+
+// 배열 메소드는 배열을 변형함
+var foo = [];
+console.log(foo);        // []
+foo.push("plugh");
+console.log(foo);        // ["plugh"]
+
+// 할당은 원시 값에 새로운 값을 부여 (변형이 아님)
+bar = bar.toUpperCase(); // BAZ
+
+ +

원시 값을 교체할 수는 있지만, 직접 변형할 수는 없습니다.

+ +

또 다른 예제 [단계별 정리]

+ +

다음 예제는 JavaScript가 원시값을 다루는 방법을 이해하는데 도움이 됩니다.

+ +

JavaScript

+ +
// 원시 값
+let foo = 5;
+
+// 원시 값을 변경해야 하는 함수 정의
+function addTwo(num) {
+   num += 2;
+}
+// 같은 작업을 시도하는 다른 함수
+function addTwo_v2(foo) {
+   foo += 2;
+}
+
+// 원시 값을 인수로 전달해 첫 번째 함수를 호출
+addTwo(foo);
+// 현재 원시 값 반환
+console.log(foo);   // 5
+
+// 두 번째 함수로 다시 시도
+addTwo_v2(foo);
+console.log(foo);   // 5
+
+ +

5 대신 7 일 것이라고 예상하였나요? 그렇다면, 이 코드의 실행 과정을 살펴보세요.

+ + + +

이것이 원시 값이 변하지 않는 이유입니다. 원시 값에 직접 작업하지 않으므로, 원본을 건드리지 않고 복사본 가져와 계속 작업을 합니다.

+ +

JavaScript에서의 원시 래퍼 객체

+ +

nullundefined 를 제외하고, 모든 원시 값은 원시 값을 래핑한 객체를 갖습니다.

+ + + +

래퍼 객체의 {{jsxref("Object.valueOf", "valueOf()")}} 메서드는 원시 값을 반환합니다.

+ +

더 알아보기

+ +

일반 지식

+ + + + -- cgit v1.2.3-54-g00ecf