From 6fca4c9f079d3654949810236fb3a2c90b6f74fe Mon Sep 17 00:00:00 2001 From: hochan222 Date: Tue, 4 Oct 2022 03:59:50 +0900 Subject: [PATCH] ko: convert html to md, web/javascript (#2894) --- files/ko/web/javascript/index.md | 229 +++--- files/ko/web/javascript/reference/index.md | 694 ++++++++---------- files/ko/web/javascript/typed_arrays/index.md | 300 +++----- 3 files changed, 512 insertions(+), 711 deletions(-) diff --git a/files/ko/web/javascript/index.md b/files/ko/web/javascript/index.md index e93db684eeff12..9e3aa0b8294f4f 100644 --- a/files/ko/web/javascript/index.md +++ b/files/ko/web/javascript/index.md @@ -10,131 +10,104 @@ tags: - 자바스크립트 translation_of: Web/JavaScript --- -
{{JsSidebar}}
- -

JavaScript (JS)는 가벼운, 인터프리터 혹은 just-in-time 컴파일 프로그래밍 언어로, {{Glossary("First-class Function", "일급 함수")}}를 지원합니다. 웹 페이지를 위한 스크립트 언어로 잘 알려져 있지만, {{Glossary("Node.js")}}, Apache CouchDB, Adobe Acrobat처럼 많은 비 브라우저 환경에서도 사용하고 있습니다. JavaScript는 {{Glossary("Prototype-based programming", "프로토타입 기반")}}, 다중 패러다임, 단일 스레드, 동적 언어로, 객체지향형, 명령형, 선언형(함수형 프로그래밍 등) 스타일을 지원합니다. 자세한 내용은 JavaScript에 대하여를 참고하세요.

- -

해당 섹션은 JavaScript 언어 자체를 다루며 웹 페이지 또는 다른 사용 환경에 대해 다루지 않습니다. 웹 페이지의 특정 {{Glossary("API","API")}}에 대한 정보를 알고 싶다면, 웹 API와 {{Glossary("DOM")}}을 참고하시기 바랍니다.

- -

JavaScript의 표준은 ECMAScript 언어 사양 (ECMA-262) 및 ECMAScript 국제화 API 사양 (ECMA-402)입니다. MDN에서 제공하는 JavaScript 문서는 ECMA-262 및 ECMA-402의 최신 초안 버전을 기반으로합니다. 새로운 ECMAScript 기능에 대한 일부 제안이 이미 브라우저에 구현 된 경우, MDN의 문서 및 예제에서 이러한 새로운 기능 중 일부를 사용할 수 있습니다. - -

JavaScript와 Java 프로그래밍 언어를 혼동해서는 안 됩니다. "Java"와 "JavaScript" 는 모두 상표이자 미국 및 기타 국가에 등록된 Oracle의 상표입니다. 다만 두 프로그래밍 언어의 구문, 시맨틱 및 사용 방법이 매우 다릅니다.

- -
-

프론트 엔드 웹 개발자가되고 싶으신가요?

- -

목표 달성에 필요한 모든 필수 정보가 포함된 과정을 마련했습니다.

- -

시작하기

- -
- -

자습서

- -

가이드 및 자습서를 통해 JavaScript로 프로그래밍하는 방법을 배워보세요.

- -

입문자용

- -

JavaScript를 배우고 싶지만 JavaScript이나 프로그래밍에 대한 이전 경험이 없는 경우 JavaScript 주제에 대한 학습 영역을 방문하세요. 전체 과정은 다음과 같습니다.

- -
-
JavaScript 첫 걸음
-
변수, 문자열, 숫자 및 배열과 같은 주요 JavaScript 기능에 대해 논의하면서 "JavaScript 는 무엇인가요?", "어떤 모습인가요?", "무엇을 할 수 있나요?"와 같은 몇 가지 기본적인 질문에 답합니다.
-
JavaScript 구성 요소
-
JavaScript의 핵심 기본 기능에 대한 이해를 넓히기 위해 조건문, 반복문, 함수, 이벤트와 같이 흔히 찾을 수 코드 블록의 형태에 대해서 알아봅니다.
-
JavaScript 객체 소개
-
JavaScript의 객체 지향적 특성에 대한 이해는 언어의 이해도를 높이며 효율적인 코드를 작성하려는 경우 중요하므로, 이 과정이 도움이 될 것입니다.
-
비동기 JavaScript
-
비동기 JavaScript가 중요한 이유와, 비동기적 코드를 사용해 서버에서 리소스 가져오기 등 블록킹 연산을 효율적으로 처리하는 방법에 대해 알아봅니다.
-
클라이언트측 웹 API
-
API란 무엇인지 탐색해보고, 개발 작업에서 자주 접하게 될 가장 일반적인 API를 사용하는 방법을 알아봅니다.
-
- -

JavaScript 안내서

- -
-
JavaScript 가이드
-
JavaScript 또는 다른 언어로 프로그래밍 경험이 있는 독자들을 대상으로한 JavaScript 언어에 대한 상세 가이드입니다.
-
- -

중급

- -
-
클라이언트 측 JavaScript 프레임워크 이해
-
JavaScript 프레임워크는 현대 프런트 엔드 웹 개발의 필수 부분으로, 개발자에게 확장 가능한 상호작용형 웹 응용 프로그램을 구축하기위한 입증된 도구를 제공합니다. 이 과정에서는 오늘날 가장 인기있는 일부 프레임워크를 다루는 자습서 시리즈로 이동하기 전에 클라이언트 측 프레임워크가 작동하는 방식과 도구 집합에 맞는 방식에 대한 기본적인 배경 지식을 제공합니다.
-
JavaScript 재입문
-
JavaScript에 대해 알고 있다고 생각하는 사람들을 위한 개요.
-
JavaScript 데이터 구조
-
JavaScript에서 이용 가능한 데이터 구조 개요.
-
동등성 비교 및 ​​동일성
-
JavaScript는 세 가지 값 비교 연산을 제공합니다: ===를 사용한 엄격한(strict) 동등성, ==를 사용한 느슨한 동등성 및 {{jsxref("Global_Objects/Object/is", "Object.is()")}} 메서드.
-
클로저
-
클로저는 함수와 그 함수가 선언된 어휘 (lexical) 환경의 조합입니다.
-
- -

고급

- -
-
상속 및 프로토타입 체인
-
널리 오해 받고 과소 평가된 프로토타입 기반 상속의 설명.
-
엄격 모드
-
엄격 모드는 초기화 전에 변수를 사용할 수 없음을 정의합니다. 이는 빠른 성능 및 쉬운 디버깅을 위한 ECMAScript 5의 제한된 변형(variant)입니다.
-
JavaScript 형식화된 배열
-
JavaScript 형식화된 배열은 원시 이진 데이터에 접근하기 위한 메커니즘을 제공합니다.
-
메모리 관리
-
JavaScript의 메모리 라이프 사이클 및 가비지 컬렉션.
-
동시성 모델 및 이벤트 루프
-
JavaScript에는 "이벤트 루프"에 기반을 둔 동시성 모델이 있습니다.
-
- -

참고서

- -

전체 JavaScript 참고서를 훑어보세요.

- -
-
표준 객체
-
{{jsxref("Array")}}, {{jsxref("Boolean")}}, {{jsxref("Date")}}, {{jsxref("Error")}}, {{jsxref("Function")}}, {{jsxref("JSON")}}, {{jsxref("Math")}}, {{jsxref("Number")}}, {{jsxref("Object")}}, {{jsxref("RegExp")}}, {{jsxref("String")}}, {{jsxref("Map")}}, {{jsxref("Set")}}, {{jsxref("WeakMap")}}, {{jsxref("WeakSet")}} 등 표준 내장 객체 알아가기.
-
표현식 및 연산자
-
JavaScript 연산자 {{jsxref("Operators/instanceof", "instanceof")}}, {{jsxref("Operators/typeof", "typeof")}}, {{jsxref("Operators/new", "new")}}, {{jsxref("Operators/this", "this")}}의 동작, 연산자 우선순위 등에 대해 더 알아보기.
-
명령문 및 선언문
-
{{jsxref("Statements/do...while", "do-while")}}, {{jsxref("Statements/for...in", "for-in")}}, {{jsxref("Statements/for...of", "for-of")}}, {{jsxref("Statements/try...catch", "try-catch")}}, {{jsxref("Statements/let", "let")}}, {{jsxref("Statements/var", "var")}}, {{jsxref("Statements/const", "const")}}, {{jsxref("Statements/if...else", "if-else")}}, {{jsxref("Statements/switch", "switch")}} 등의 JavaScript의 구문 및 키워드 작동법 배우기.
-
함수
-
애플리케이션 개발을 위한 JavaScript 함수로 작업하는 법 배우기.
-
- -

도구 & 자원

- -

JavaScript 코드 작성과 디버깅을 돕는 유용한 도구 모음입니다.

- -
-
Firefox 개발자 도구
-
Web Console, JavaScript Profiler, Debugger 등.
-
JavaScript 쉘
-
JavaScript 쉘을 사용하면 JavaScript 코드 스니펫을 빠르게 테스트 할 수 있습니다.
-
JavaScript 배우기
-
야심찬 웹 개발자를 위한 훌륭한 리소스 — 짧은 강의와 상호작용형 환경에서 JavaScript를 배우세요. 처음 40 개의 강의는 무료이며 전체 과정은 일회성 소액의 금액으로 제공됩니다.
-
TogetherJS
-
협업이 쉬워졌습니다. 사이트에 TogetherJS를 추가하면 사용자가 웹 사이트에서 실시간으로 서로를 도울 수 있습니다!
-
Stack Overflow
-
"JavaScript" 태그가 달린 Stack Overflow 질문들 입니다.
-
JSFiddle
-
JavaScript, CSS, HTML 편집 및 실시간 결과를 얻을 수 있으며, 외부 자원(resource)을 사용하며 온라인으로 팀과 협업이 가능합니다.
-
Plunker
-
Plunker는 온라인에서 여러분의 웹 개발 아이디어를 실제로 만들거나 다른사람과 공유 협업하는 커뮤니티 입니다. JavaScript, CSS, HTML 파일을 편집하고 실시간 결과와 파일 구조를 얻으세요.
-
JSBin
-
-

JS Bin은 오픈 소스 협업 웹 개발 디버깅 도구입니다.

-
-
Codepen
-
-

Codepen은 실시간으로 실행 결과를 볼 수 있으며 사용되는 또 다른 협업 웹 개발 도구입니다.

-
-
StackBlitz
-
-

StackBlitz는 React, Angular 등을 사용하여 풀 스택 애플리케이션을 호스팅하고 배포 할 수 있는 또 다른 온라인 플레이 그라운드/디버깅 도구입니다.

-
-
RunJS
-
-

RunJS는 데스크톱 플레이그라운드/스크래치 패드 도구로, 실시간 결과를 제공하고 노드 및 브라우저 API에 대한 액세스를 제공합니다.

-
-
+{{JsSidebar}} + +**JavaScript** (**JS**)는 가벼운, 인터프리터 혹은 [just-in-time](https://ko.wikipedia.org/wiki/JIT_%EC%BB%B4%ED%8C%8C%EC%9D%BC) 컴파일 프로그래밍 언어로, {{Glossary("First-class Function", "일급 함수")}}를 지원합니다. 웹 페이지를 위한 스크립트 언어로 잘 알려져 있지만, {{Glossary("Node.js")}}, [Apache CouchDB](https://couchdb.apache.org/), [Adobe Acrobat](https://www.adobe.com/devnet/acrobat/javascript.html)처럼 [많은 비 브라우저 환경](https://en.wikipedia.org/wiki/JavaScript#Other_usage)에서도 사용하고 있습니다. JavaScript는 {{Glossary("Prototype-based programming", "프로토타입 기반")}}, 다중 패러다임, 단일 스레드, 동적 언어로, 객체지향형, 명령형, 선언형(함수형 프로그래밍 등) 스타일을 지원합니다. 자세한 내용은 [JavaScript에 대하여](/ko/docs/Web/JavaScript/About_JavaScript)를 참고하세요. + +해당 섹션은 JavaScript 언어 자체를 다루며 웹 페이지 또는 다른 사용 환경에 대해 다루지 않습니다. 웹 페이지의 특정 {{Glossary("API","API")}}에 대한 정보를 알고 싶다면, [웹 API](/ko/docs/Web/API)와 {{Glossary("DOM")}}을 참고하시기 바랍니다. + +JavaScript의 표준은 [ECMAScript 언어 사양](https://tc39.es/ecma262/) (ECMA-262) 및 [ECMAScript 국제화 API 사양](https://tc39.es/ecma402/) (ECMA-402)입니다. MDN에서 제공하는 JavaScript 문서는 ECMA-262 및 ECMA-402의 최신 초안 버전을 기반으로합니다. [새로운 ECMAScript 기능에 대한 일부 제안](https://github.com/tc39/proposals)이 이미 브라우저에 구현 된 경우, MDN의 문서 및 예제에서 이러한 새로운 기능 중 일부를 사용할 수 있습니다. + +JavaScript와 [Java 프로그래밍 언어]()를 혼동해서는 안 됩니다. "Java"와 "JavaScript" 는 모두 상표이자 미국 및 기타 국가에 등록된 Oracle의 상표입니다. 다만 두 프로그래밍 언어의 구문, 시맨틱 및 사용 방법이 매우 다릅니다. + +> **알림:** #### 프론트 엔드 웹 개발자가되고 싶으신가요?목표 달성에 필요한 모든 필수 정보가 포함된 과정을 마련했습니다.[**시작하기**](/ko/docs/Learn/Front-end_web_developer) + +## 자습서 + +가이드 및 자습서를 통해 JavaScript로 프로그래밍하는 방법을 배워보세요. + +### 입문자용 + +JavaScript를 배우고 싶지만 JavaScript이나 프로그래밍에 대한 이전 경험이 없는 경우 [JavaScript 주제에 대한 학습 영역](/ko/docs/Learn/JavaScript)을 방문하세요. 전체 과정은 다음과 같습니다. + +- [JavaScript 첫 걸음](/ko/docs/Learn/JavaScript/First_steps) + - : 변수, 문자열, 숫자 및 배열과 같은 주요 JavaScript 기능에 대해 논의하면서 "JavaScript 는 무엇인가요?", "어떤 모습인가요?", "무엇을 할 수 있나요?"와 같은 몇 가지 기본적인 질문에 답합니다. +- [JavaScript 구성 요소](/ko/docs/Learn/JavaScript/Building_blocks) + - : JavaScript의 핵심 기본 기능에 대한 이해를 넓히기 위해 조건문, 반복문, 함수, 이벤트와 같이 흔히 찾을 수 코드 블록의 형태에 대해서 알아봅니다. +- [JavaScript 객체 소개](/ko/docs/Learn/JavaScript/Objects) + - : JavaScript의 객체 지향적 특성에 대한 이해는 언어의 이해도를 높이며 효율적인 코드를 작성하려는 경우 중요하므로, 이 과정이 도움이 될 것입니다. +- [비동기 JavaScript](/ko/docs/Learn/JavaScript/Asynchronous) + - : 비동기 JavaScript가 중요한 이유와, 비동기적 코드를 사용해 서버에서 리소스 가져오기 등 블록킹 연산을 효율적으로 처리하는 방법에 대해 알아봅니다. +- [클라이언트측 웹 API](/ko/docs/Learn/JavaScript/Client-side_web_APIs) + - : API란 무엇인지 탐색해보고, 개발 작업에서 자주 접하게 될 가장 일반적인 API를 사용하는 방법을 알아봅니다. +- ### JavaScript 안내서 + + [JavaScript 가이드](/ko/docs/Web/JavaScript/Guide) + + - : JavaScript 또는 다른 언어로 프로그래밍 경험이 있는 독자들을 대상으로한 JavaScript 언어에 대한 상세 가이드입니다. + +### 중급 + +- [클라이언트 측 JavaScript 프레임워크 이해](/ko/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks) + - : JavaScript 프레임워크는 현대 프런트 엔드 웹 개발의 필수 부분으로, 개발자에게 확장 가능한 상호작용형 웹 응용 프로그램을 구축하기위한 입증된 도구를 제공합니다. 이 과정에서는 오늘날 가장 인기있는 일부 프레임워크를 다루는 자습서 시리즈로 이동하기 전에 클라이언트 측 프레임워크가 작동하는 방식과 도구 집합에 맞는 방식에 대한 기본적인 배경 지식을 제공합니다. +- [JavaScript 재입문](/ko/docs/Web/JavaScript/A_re-introduction_to_JavaScript) + - : JavaScript에 대해 알고 있다고 _생각하는_ 사람들을 위한 개요. +- [JavaScript 데이터 구조](/ko/docs/Web/JavaScript/Data_structures) + - : JavaScript에서 이용 가능한 데이터 구조 개요. +- [동등성 비교 및 ​​동일성](/ko/docs/Web/JavaScript/Equality_comparisons_and_sameness) + - : JavaScript는 세 가지 값 비교 연산을 제공합니다: `===`를 사용한 엄격한(strict) 동등성, `==`를 사용한 느슨한 동등성 및 {{jsxref("Global_Objects/Object/is", "Object.is()")}} 메서드. +- [클로저](/ko/docs/Web/JavaScript/Closures) + - : 클로저는 함수와 그 함수가 선언된 어휘 (lexical) 환경의 조합입니다. + +### 고급 + +- [상속 및 프로토타입 체인](/ko/docs/Web/JavaScript/Inheritance_and_the_prototype_chain) + - : 널리 오해 받고 과소 평가된 프로토타입 기반 상속의 설명. +- [엄격 모드](/ko/docs/Web/JavaScript/Reference/Strict_mode) + - : 엄격 모드는 초기화 전에 변수를 사용할 수 없음을 정의합니다. 이는 빠른 성능 및 쉬운 디버깅을 위한 ECMAScript 5의 제한된 변형(variant)입니다. +- [JavaScript 형식화된 배열](/ko/docs/Web/JavaScript/Typed_arrays) + - : JavaScript 형식화된 배열은 원시 이진 데이터에 접근하기 위한 메커니즘을 제공합니다. +- [메모리 관리](/ko/docs/Web/JavaScript/Memory_Management) + - : JavaScript의 메모리 라이프 사이클 및 가비지 컬렉션. +- [동시성 모델 및 이벤트 루프](/ko/docs/Web/JavaScript/EventLoop) + - : JavaScript에는 "이벤트 루프"에 기반을 둔 동시성 모델이 있습니다. + +## 참고서 + +전체 [JavaScript 참고서](/ko/docs/Web/JavaScript/Reference)를 훑어보세요. + +- [표준 객체](/ko/docs/Web/JavaScript/Reference/Global_Objects) + - : {{jsxref("Array")}}, {{jsxref("Boolean")}}, {{jsxref("Date")}}, {{jsxref("Error")}}, {{jsxref("Function")}}, {{jsxref("JSON")}}, {{jsxref("Math")}}, {{jsxref("Number")}}, {{jsxref("Object")}}, {{jsxref("RegExp")}}, {{jsxref("String")}}, {{jsxref("Map")}}, {{jsxref("Set")}}, {{jsxref("WeakMap")}}, {{jsxref("WeakSet")}} 등 표준 내장 객체 알아가기. +- [표현식 및 연산자](/ko/docs/Web/JavaScript/Reference/Operators) + - : JavaScript 연산자 {{jsxref("Operators/instanceof", "instanceof")}}, {{jsxref("Operators/typeof", "typeof")}}, {{jsxref("Operators/new", "new")}}, {{jsxref("Operators/this", "this")}}의 동작, [연산자 우선순위](/ko/docs/Web/JavaScript/Reference/Operators/Operator_Precedence "operator precedence") 등에 대해 더 알아보기. +- [명령문 및 선언문](/ko/docs/Web/JavaScript/Reference/Statements) + - : {{jsxref("Statements/do...while", "do-while")}}, {{jsxref("Statements/for...in", "for-in")}}, {{jsxref("Statements/for...of", "for-of")}}, {{jsxref("Statements/try...catch", "try-catch")}}, {{jsxref("Statements/let", "let")}}, {{jsxref("Statements/var", "var")}}, {{jsxref("Statements/const", "const")}}, {{jsxref("Statements/if...else", "if-else")}}, {{jsxref("Statements/switch", "switch")}} 등의 JavaScript의 구문 및 키워드 작동법 배우기. +- [함수](/ko/docs/Web/JavaScript/Reference/Functions) + - : 애플리케이션 개발을 위한 JavaScript 함수로 작업하는 법 배우기. + +## 도구 & 자원 + +**JavaScript** 코드 작성과 디버깅을 돕는 유용한 도구 모음입니다. + +- [Firefox 개발자 도구](/ko/docs/Tools) + - : [Web Console](/ko/docs/Tools/Web_Console), [JavaScript Profiler](/ko/docs/Tools/Performance), [Debugger](/ko/docs/Tools/Debugger) 등. +- [JavaScript 쉘](/ko/docs/Web/JavaScript/Shells) + - : JavaScript 쉘을 사용하면 JavaScript 코드 스니펫을 빠르게 테스트 할 수 있습니다. +- [JavaScript 배우기](https://learnjavascript.online/) + - : 야심찬 웹 개발자를 위한 훌륭한 리소스 — 짧은 강의와 상호작용형 환경에서 JavaScript를 배우세요. 처음 40 개의 강의는 무료이며 전체 과정은 일회성 소액의 금액으로 제공됩니다. +- [TogetherJS](https://togetherjs.com/) + - : 협업이 쉬워졌습니다. 사이트에 TogetherJS를 추가하면 사용자가 웹 사이트에서 실시간으로 서로를 도울 수 있습니다! +- [Stack Overflow](https://stackoverflow.com/questions/tagged/javascript) + - : "JavaScript" 태그가 달린 Stack Overflow 질문들 입니다. +- [JSFiddle](https://jsfiddle.net/) + - : JavaScript, CSS, HTML 편집 및 실시간 결과를 얻을 수 있으며, 외부 자원(resource)을 사용하며 온라인으로 팀과 협업이 가능합니다. +- [Plunker](https://plnkr.co/) + - : Plunker는 온라인에서 여러분의 웹 개발 아이디어를 실제로 만들거나 다른사람과 공유 협업하는 커뮤니티 입니다. JavaScript, CSS, HTML 파일을 편집하고 실시간 결과와 파일 구조를 얻으세요. +- [JSBin](https://jsbin.com/) + - : JS Bin은 오픈 소스 협업 웹 개발 디버깅 도구입니다. +- [Codepen](https://codepen.io/) + - : Codepen은 실시간으로 실행 결과를 볼 수 있으며 사용되는 또 다른 협업 웹 개발 도구입니다. +- [StackBlitz](https://stackblitz.com/) + - : StackBlitz는 React, Angular 등을 사용하여 풀 스택 애플리케이션을 호스팅하고 배포 할 수 있는 또 다른 온라인 플레이 그라운드/디버깅 도구입니다. +- [RunJS](https://runjs.app/) + - : RunJS는 데스크톱 플레이그라운드/스크래치 패드 도구로, 실시간 결과를 제공하고 노드 및 브라우저 API에 대한 액세스를 제공합니다. diff --git a/files/ko/web/javascript/reference/index.md b/files/ko/web/javascript/reference/index.md index 38ca8a5227c397..5b2662b4936de9 100644 --- a/files/ko/web/javascript/reference/index.md +++ b/files/ko/web/javascript/reference/index.md @@ -15,396 +15,306 @@ tags: - programming translation_of: Web/JavaScript/Reference --- +{{JsSidebar}} -
{{JsSidebar}}
- -

- 이 페이지는 JavaScript 언어에 대한 정보 보관소입니다. - 이 참고서에 대해 더 읽어보세요. -

- -

내장 객체

- -

- JavaScript 표준 내장 객체와 그 메서드 및 속성입니다. -

- -

값 속성

- - - -

함수 속성

- - - -

기초 객체

- - - -

오류 객체

- - - -

숫자와 날짜

- - - -

텍스트 처리

- - - -

인덱스 콜렉션

- - - -

키 콜렉션

- - - -

구조화된 데이터

- - - -

메모리 관리

- - - -

제어 추상화

- - - -

리플렉션

- - - -

국제화

- - - -

WebAssembly

- - - -

명령문

- -

JavaScript 명령문과 선언문입니다.

- -

흐름 제어

- - - -

선언

- - - -

함수와 클래스

- - - -

순회와 반복

- - - -

기타

- - - -

표현식 및 연산자

- -

JavaScript 표현식과 연산자입니다.

- -

일차 표현식

- - - -

좌변 표현식

- - - -

증감

- - - -

단항 연산자

- - - -

산술 연산자

- - - -

관계 연산자

- - - -

동일 연산자

- - - -

비트 시프트 연산자

- - - -

이진 비트 연산자

- - - -

이진 논리 연산자

- - - -

조건(삼항) 연산자

- - - -

할당 연산자

- - - -

쉼표 연산자

- - - -

함수

- -

- 이 장은 응용 프로그램을 개발할 때 JavaScript 함수를 사용하는 - 법을 설명합니다. -

- - - -

추가 참고 페이지

- - +이 페이지는 JavaScript 언어에 대한 정보 보관소입니다. +[이 참고서에 대해 더 읽어보세요](/ko/docs/Web/JavaScript/Reference/About). + +## 내장 객체 + +[JavaScript 표준 내장 객체](/ko/docs/Web/JavaScript/Reference/Global_Objects)와 그 메서드 및 속성입니다. + +### 값 속성 + +- {{JSxRef("globalThis")}} +- {{JSxRef("Infinity")}} +- {{JSxRef("NaN")}} +- {{JSxRef("undefined")}} + +### 함수 속성 + +- {{JSxRef("Global_Objects/eval", "eval()")}} +- {{JSxRef("Global_Objects/isFinite", "isFinite()")}} +- {{JSxRef("Global_Objects/isNaN", "isNaN()")}} +- {{JSxRef("Global_Objects/parseFloat", "parseFloat()")}} +- {{JSxRef("Global_Objects/parseInt", "parseInt()")}} +- {{JSxRef("Global_Objects/decodeURI", "decodeURI()")}} +- {{JSxRef("Global_Objects/decodeURIComponent", "decodeURIComponent()")}} +- {{JSxRef("Global_Objects/encodeURI", "encodeURI()")}} +- {{JSxRef("Global_Objects/encodeURIComponent", "encodeURIComponent()")}} + +### 기초 객체 + +- {{JSxRef("Object")}} +- {{JSxRef("Function")}} +- {{JSxRef("Boolean")}} +- {{JSxRef("Symbol")}} + +### 오류 객체 + +- {{JSxRef("Error")}} +- {{JSxRef("EvalError")}} +- {{JSxRef("RangeError")}} +- {{JSxRef("ReferenceError")}} +- {{JSxRef("SyntaxError")}} +- {{JSxRef("TypeError")}} +- {{JSxRef("URIError")}} +- {{JSxRef("AggregateError")}} + +### 숫자와 날짜 + +- {{JSxRef("Number")}} +- {{JSxRef("BigInt")}} +- {{JSxRef("Math")}} +- {{JSxRef("Date")}} + +### 텍스트 처리 + +- {{JSxRef("String")}} +- {{JSxRef("RegExp")}} + +### 인덱스 콜렉션 + +- {{JSxRef("Array")}} +- {{JSxRef("Int8Array")}} +- {{JSxRef("Uint8Array")}} +- {{JSxRef("Uint8ClampedArray")}} +- {{JSxRef("Int16Array")}} +- {{JSxRef("Uint16Array")}} +- {{JSxRef("Int32Array")}} +- {{JSxRef("Uint32Array")}} +- {{JSxRef("BigInt64Array")}} +- {{JSxRef("BigUint64Array")}} +- {{JSxRef("Float32Array")}} +- {{JSxRef("Float64Array")}} + +### 키 콜렉션 + +- {{JSxRef("Map")}} +- {{JSxRef("Set")}} +- {{JSxRef("WeakMap")}} +- {{JSxRef("WeakSet")}} + +### 구조화된 데이터 + +- {{JSxRef("ArrayBuffer")}} +- {{JSxRef("SharedArrayBuffer")}} +- {{JSxRef("Atomics")}} +- {{JSxRef("DataView")}} +- {{JSxRef("JSON")}} + +### 메모리 관리 + +- {{JSxRef("WeakRef")}} +- {{JsxRef("FinalizationRegistry")}} + +### 제어 추상화 + +- {{JSxRef("Promise")}} +- {{JSxRef("GeneratorFunction")}} +- {{JSxRef("AsyncGeneratorFunction")}} +- {{JSxRef("Generator")}} +- {{JSxRef("AsyncGenerator")}} +- {{JSxRef("AsyncFunction")}} + +### 리플렉션 + +- {{JSxRef("Reflect")}} +- {{JSxRef("Proxy")}} + +### 국제화 + +- {{JSxRef("Intl")}} +- {{JSxRef("Global_Objects/Intl/Collator", "Intl.Collator")}} +- {{JSxRef("Global_Objects/Intl/DateTimeFormat", "Intl.DateTimeFormat")}} +- {{JSxRef("Global_Objects/Intl/DisplayNames", "Intl.DisplayNames")}} +- {{JSxRef("Global_Objects/Intl/ListFormat", "Intl.ListFormat")}} +- {{JSxRef("Global_Objects/Intl/Locale", "Intl.Locale")}} +- {{JSxRef("Global_Objects/Intl/NumberFormat", "Intl.NumberFormat")}} +- {{JSxRef("Global_Objects/Intl/PluralRules", "Intl.PluralRules")}} +- {{JSxRef("Global_Objects/Intl/RelativeTimeFormat", "Intl.RelativeTimeFormat")}} +- {{JSxRef("Global_Objects/Intl/Segmenter", "Intl.Segmenter")}} + +## 명령문 + +[JavaScript 명령문과 선언문](/ko/docs/Web/JavaScript/Reference/Statements)입니다. + +### 흐름 제어 + +- {{jsxref("Statements/block", "블록", "", 1)}} +- {{jsxref("Statements/Empty", "빈 명령문", "", 1)}} +- {{jsxref("Statements/break", "break")}} +- {{jsxref("Statements/continue", "continue")}} +- {{jsxref("Statements/if...else", "if...else")}} +- {{jsxref("Statements/switch", "switch")}} +- {{jsxref("Statements/throw", "throw")}} +- {{jsxref("Statements/try...catch", "try...catch")}} + +### 선언 + +- {{jsxref("Statements/var", "var")}} +- {{jsxref("Statements/let", "let")}} +- {{jsxref("Statements/const", "const")}} + +### 함수와 클래스 + +- {{jsxref("Statements/function", "function")}} +- {{jsxref("Statements/function*", "function*")}} +- {{jsxref("Statements/async_function", "async function")}} +- {{jsxref("Statements/return", "return")}} +- {{jsxref("Statements/class", "class")}} + +### 순회와 반복 + +- {{jsxref("Statements/do...while", "do...while")}} +- {{jsxref("Statements/for", "for")}} +- {{jsxref("Statements/for_each...in", "for each...in")}} +- {{jsxref("Statements/for...in", "for...in")}} +- {{jsxref("Statements/for...of", "for...of")}} +- {{jsxref("Statements/for-await...of", "for await...of")}} +- {{jsxref("Statements/while", "while")}} + +### 기타 + +- {{jsxref("Statements/debugger", "debugger")}} +- {{jsxref("Statements/export", "export")}} +- {{jsxref("Statements/import", "import")}} +- {{jsxref("Statements/label", "label")}} +- {{jsxref("Statements/with", "with")}} + +## 표현식 및 연산자 + +[JavaScript 표현식과 연산자](/ko/docs/Web/JavaScript/Reference/Operators)입니다. + +### 일차 표현식 + +- {{JSxRef("Operators/this", "this")}} +- {{JSxRef("Operators/function", "function")}} +- {{JSxRef("Operators/class", "class")}} +- {{JSxRef("Operators/function*", "function*")}} +- {{JSxRef("Operators/yield", "yield")}} +- {{JSxRef("Operators/yield*", "yield*")}} +- {{JSxRef("Operators/async_function", "async function")}} +- {{JSxRef("Operators/async_function*", "async function*")}} +- {{JSxRef("Operators/await", "await")}} +- {{JSxRef("Global_Objects/Array", "[]")}} +- {{JSxRef("Operators/Object_initializer", "{}")}} +- {{JSxRef("Global_Objects/RegExp", "/ab+c/i")}} +- {{JSxRef("Operators/Grouping", "( )")}} +- [`null`](/en-US/docs/Web/JavaScript/Reference/Operators/null) + +### 좌변 표현식 + +- {{JSxRef("Operators/Property_accessors", "Property accessors", "", 1)}} +- [`?.` (Optional chaining)](/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining) +- {{JSxRef("Operators/new", "new")}} +- {{JSxRef("Operators/new%2Etarget", "new.target")}} +- {{JSxRef("Operators/import%2Emeta", "import.meta")}} +- {{JSxRef("Operators/super", "super")}} +- {{JSxRef("Operators/Spread_syntax", "...obj")}} + +### 증감 + +- {{JSxRef("Operators/Increment", "A++")}} +- {{JSxRef("Operators/Decrement", "A--")}} +- {{JSxRef("Operators/Increment", "++A")}} +- {{JSxRef("Operators/Decrement", "--A")}} + +### 단항 연산자 + +- {{JSxRef("Operators/delete", "delete")}} +- {{JSxRef("Operators/void", "void")}} +- {{JSxRef("Operators/typeof", "typeof")}} +- {{JSxRef("Operators/Unary_plus", "+")}} +- {{JSxRef("Operators/Unary_negation", "-")}} +- {{JSxRef("Operators/Bitwise_NOT", "~")}} +- {{JSxRef("Operators/Logical_NOT", "!")}} + +### 산술 연산자 + +- {{JSxRef("Operators/Addition", "+")}} +- {{JSxRef("Operators/Subtraction", "-")}} +- {{JSxRef("Operators/Division", "/")}} +- {{JSxRef("Operators/Multiplication", "*")}} +- {{JSxRef("Operators/Remainder", "%")}} +- {{JSxRef("Operators/Exponentiation", "**")}} + +### 관계 연산자 + +- {{JSxRef("Operators/in", "in")}} +- {{JSxRef("Operators/instanceof", "instanceof")}} +- {{JSxRef("Operators/Less_than", "<")}} +- {{JSxRef("Operators/Greater_than", ">")}} +- {{JSxRef("Operators/Less_than_or_equal", "<=")}} +- {{JSxRef("Operators/Greater_than_or_equal", ">=")}} + +### 동일 연산자 + +- {{JSxRef("Operators/Equality", "==")}} +- {{JSxRef("Operators/Inequality", "!=")}} +- {{JSxRef("Operators/Strict_equality", "===")}} +- {{JSxRef("Operators/Strict_inequality", "!==")}} + +### 비트 시프트 연산자 + +- {{JSxRef("Operators/Left_shift", "<<")}} +- {{JSxRef("Operators/Right_shift", ">>")}} +- {{JSxRef("Operators/Unsigned_right_shift", ">>>")}} + +### 이진 비트 연산자 + +- {{JSxRef("Operators/Bitwise_AND", "&")}} +- {{JSxRef("Operators/Bitwise_OR", "|")}} +- {{JSxRef("Operators/Bitwise_XOR", "^")}} + +### 이진 논리 연산자 + +- {{JSxRef("Operators/Logical_AND", "&&")}} +- {{JSxRef("Operators/Logical_OR", "||")}} +- {{JSxRef("Operators/Nullish_coalescing_operator", "??")}} + +### 조건(삼항) 연산자 + +- {{JSxRef("Operators/Conditional_Operator", "(condition ? ifTrue : ifFalse)")}} + +### 할당 연산자 + +- {{JSxRef("Operators/Assignment", "=")}} +- {{JSxRef("Operators/Multiplication_assignment", "*=")}} +- {{JSxRef("Operators/Exponentiation_assignment", "**=")}} +- {{JSxRef("Operators/Division_assignment", "/=")}} +- {{JSxRef("Operators/Remainder_assignment", "%=")}} +- {{JSxRef("Operators/Addition_assignment", "+=")}} +- {{JSxRef("Operators/Subtraction_assignment", "-=")}} +- {{JSxRef("Operators/Left_shift_assignment", "<<=")}} +- {{JSxRef("Operators/Right_shift_assignment", ">>=")}} +- {{JSxRef("Operators/Unsigned_right_shift_assignment", ">>>=")}} +- {{JSxRef("Operators/Bitwise_AND_assignment", "&=")}} +- {{JSxRef("Operators/Bitwise_XOR_assignment", "^=")}} +- {{JSxRef("Operators/Bitwise_OR_assignment", "|=")}} +- {{JSxRef("Operators/Logical_AND_assignment", "&&=")}} +- {{JSxRef("Operators/Logical_OR_assignment", "||=")}} +- {{JSxRef("Operators/Logical_nullish_assignment", "??=")}} +- {{JSxRef("Operators/Destructuring_assignment", "[a, b] = arr")}} +- {{JSxRef("Operators/Destructuring_assignment", "{ a, b } = obj")}} + +### 쉼표 연산자 + +- {{JSxRef("Operators/Comma_Operator", ",")}} + +## 함수 + +이 장은 응용 프로그램을 개발할 때 [JavaScript 함수](/ko/docs/Web/JavaScript/Reference/Functions)를 사용하는 +법을 설명합니다. + +- [`arguments`](/ko/docs/Web/JavaScript/Reference/Functions/arguments) +- [화살표 함수](/ko/docs/Web/JavaScript/Reference/Functions/Arrow_functions) +- [기본 매개변수](/ko/docs/Web/JavaScript/Reference/Functions/Default_parameters) +- [나머지 매개변수](/ko/docs/Web/JavaScript/Reference/Functions/rest_parameters) + +## 추가 참고 페이지 + +- [어휘 구문](/ko/docs/Web/JavaScript/Reference/Lexical_grammar) +- [자료형과 자료 구조](/ko/docs/Web/JavaScript/Data_structures) +- [엄격 모드](/ko/docs/Web/JavaScript/Reference/Strict_mode) +- [사라진 기능](/ko/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features) diff --git a/files/ko/web/javascript/typed_arrays/index.md b/files/ko/web/javascript/typed_arrays/index.md index b228317e867fd9..b2cd681ce24163 100644 --- a/files/ko/web/javascript/typed_arrays/index.md +++ b/files/ko/web/javascript/typed_arrays/index.md @@ -6,243 +6,161 @@ tags: - JavaScript translation_of: Web/JavaScript/Typed_arrays --- -
{{JsSidebar("Advanced")}}
- -

JavaScript 형식화 배열(typed array)은 배열같은 객체이고 원시(raw) 이진 데이터에 액세스하기 위한 메커니즘을 제공합니다. 이미 아시다시피, {{jsxref("Array")}} 객체는 동적으로 늘었다 줄고 어떤 JavaScript 값이든 가질 수 있습니다. JavaScript 엔진은 이러한 배열이 빨라지도록 최적화를 수행합니다. 그러나, audio 및 video 조작과 같은 기능 추가, WebSocket을 사용한 원시 데이터에 액세스 등 웹 어플리케이션이 점점 더 강력해짐에 따라, 빠르고 쉽게 형식화 배열의 원시 이진 데이터를 조작할 수 있게 하는 것이 JavaScript 코드에 도움이 될 때가 있음이 분명해 졌습니다.

- -

그러나, 형식화 배열은 보통 배열과 혼동되지는 않습니다, 형식화 배열에 {{jsxref("Array.isArray()")}} 호출은 false를 반환하기에. 게다가, 보통 배열에 이용할 수 있는 모든 메서드가 형식화 배열에 의해 지원되지는 않습니다(가령 push 및 pop).

- -

버퍼 및 뷰: 형식화 배열 구조

- -

최대 유연성 및 효율을 달성하기 위해, JavaScript 형식화 배열은 구현을 버퍼로 나눕니다. 버퍼 ({{jsxref("ArrayBuffer")}} 객체에 의해 구현됨)는 데이터 부분(chunk, 덩어리)을 나타내는 객체입니다; 이야기 할 형식이 없으며, 그 콘텐츠에 액세스하기 위한 메커니즘을 제공하지 않습니다. 버퍼에 포함된 메모리에 액세스하기 위해, 뷰를 사용할 필요가 있습니다. 뷰는 문맥(context, 즉 데이터 형, 시작 오프셋 및 요소 수)을 제공해 데이터를 실제 형식화 배열로 바꿉니다.

- -

Typed arrays in an ArrayBuffer

- -

ArrayBuffer

- -

{{jsxref("ArrayBuffer")}}는 일반 고정 길이 이진 데이터 버퍼를 나타내는 데 사용되는 데이터 형입니다. ArrayBuffer 콘텐츠를 직접 조작할 수는 없습니다; 대신에, 형식화 배열 뷰 또는 특정 형식으로 버퍼를 나타내는 {{jsxref("DataView")}}를 만들어 버퍼의 콘텐츠를 읽고 쓰기 위해 사용합니다.

- -

형식화 배열 뷰

- -

형식화 배열 뷰는 자체 설명형 이름이 있으며 Int8, Uint32, Float64 등과 같은 모든 일반 숫자 형을 위한 뷰를 제공합니다. 특별한 형식화 배열 뷰가 하나 있습니다, Uint8ClampedArray. 값은 0에서 255 사이로 단속(제한)합니다. 예를 들어, 이는 Canvas 데이터 처리에 유용합니다.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeValue RangeSize in bytesDescriptionWeb IDL typeEquivalent C type
{{jsxref("Int8Array")}}-128 to 12718-bit two's complement signed integerbyteint8_t
{{jsxref("Uint8Array")}}0 to 25518-bit unsigned integeroctetuint8_t
{{jsxref("Uint8ClampedArray")}}0 to 25518-bit unsigned integer (clamped)octetuint8_t
{{jsxref("Int16Array")}}-32768 to 32767216-bit two's complement signed integershortint16_t
{{jsxref("Uint16Array")}}0 to 65535216-bit unsigned integerunsigned shortuint16_t
{{jsxref("Int32Array")}}-2147483648 to 2147483647432-bit two's complement signed integerlongint32_t
{{jsxref("Uint32Array")}}0 to 4294967295432-bit unsigned integerunsigned longuint32_t
{{jsxref("Float32Array")}}-3.4E38 to 3.4E38 and 1.2E-38 is the min positive number432-bit IEEE floating point number (7 significant digits e.g., 1.123456)unrestricted floatfloat
{{jsxref("Float64Array")}}-1.8E308 to 1.8E308 and 5E-324 is the min positive number864-bit IEEE floating point number (16 significant digits e.g., 1.123...15)unrestricted doubledouble
{{jsxref("BigInt64Array")}}-2^63 to 2^63 - 1864-bit two's complement signed integerbigintint64_t (signed long long)
{{jsxref("BigUint64Array")}}0 to 2^64 - 1864-bit unsigned integerbigintuint64_t (unsigned long long)
- -

DataView

- -

{{jsxref("DataView")}}는 버퍼에 임의 데이터를 읽고 쓰기 위해 getter/setter API를 제공하는 저레벨 인터페이스입니다. 예를 들어, 서로 다른 유형의 데이터를 처리하는 경우 유용합니다. 형식화 배열 뷰는 플랫폼의 본디(native) 바이트 순서(byte-order, {{Glossary("Endianness")}} 참조)에 속합니다. DataView로 바이트 순서를 제어할 수 있습니다. 기본으로 big-endian이고 getter/setter 메서드로 little-endian으로 설정될 수 있습니다.

- -

형식화 배열을 사용하는 웹 API

- -
-
FileReader.prototype.readAsArrayBuffer()
-
FileReader.prototype.readAsArrayBuffer() 메서드는 지정된 Blob 또는 File의 콘텐츠를 읽기 시작합니다.
-
XMLHttpRequest.prototype.send()
-
XMLHttpRequest 인스턴스의 send() 메서드는 이제 형식화 배열 및 인수로 {{jsxref("ArrayBuffer")}} 객체를 지원합니다.
-
ImageData.data
-
0에서 255까지 정수값으로 RGBA 순 데이터를 포함하는 1차원 배열을 나타내는 {{jsxref("Uint8ClampedArray")}}입니다.
-
- -

- -

버퍼와 뷰 사용하기

- -

우선, 여기서 16바이트 고정 길이로 버퍼를 만들어야 합니다:

- -
var buffer = new ArrayBuffer(16);
-
- -

이 시점에서, 바이트가 모두 0으로 미리 초기화된 메모리 덩어리가 있습니다. 그렇지만 이거 가지고 할 수 있는 게 많지 않습니다. 실제 16바이트 길이인지 확인할 수 있고 대략 그런 정도입니다:

- -
if (buffer.byteLength === 16) {
+{{JsSidebar("Advanced")}}
+
+JavaScript 형식화 배열(typed array)은 배열같은 객체이고 원시(raw) 이진 데이터에 액세스하기 위한 메커니즘을 제공합니다. 이미 아시다시피, {{jsxref("Array")}} 객체는 동적으로 늘었다 줄고 어떤 JavaScript 값이든 가질 수 있습니다. JavaScript 엔진은 이러한 배열이 빨라지도록 최적화를 수행합니다. 그러나, audio 및 video 조작과 같은 기능 추가, WebSocket을 사용한 원시 데이터에 액세스 등 웹 어플리케이션이 점점 더 강력해짐에 따라, 빠르고 쉽게 형식화 배열의 원시 이진 데이터를 조작할 수 있게 하는 것이 JavaScript 코드에 도움이 될 때가 있음이 분명해 졌습니다.
+
+그러나, 형식화 배열은 보통 배열과 혼동되지는 않습니다, 형식화 배열에 {{jsxref("Array.isArray()")}} 호출은 `false`를 반환하기에. 게다가, 보통 배열에 이용할 수 있는 모든 메서드가 형식화 배열에 의해 지원되지는 않습니다(가령 push 및 pop).
+
+## 버퍼 및 뷰: 형식화 배열 구조
+
+최대 유연성 및 효율을 달성하기 위해, JavaScript 형식화 배열은 구현을 **버퍼** 및 **뷰**로 나눕니다. 버퍼 ({{jsxref("ArrayBuffer")}} 객체에 의해 구현됨)는 데이터 부분(chunk, 덩어리)을 나타내는 객체입니다; 이야기 할 형식이 없으며, 그 콘텐츠에 액세스하기 위한 메커니즘을 제공하지 않습니다. 버퍼에 포함된 메모리에 액세스하기 위해, 뷰를 사용할 필요가 있습니다. 뷰는 문맥(context, 즉 데이터 형, 시작 오프셋 및 요소 수)을 제공해 데이터를 실제 형식화 배열로 바꿉니다.
+
+![Typed arrays in an ArrayBuffer](https://mdn.mozillademos.org/files/8629/typed_arrays.png)
+
+### ArrayBuffer
+
+{{jsxref("ArrayBuffer")}}는 일반 고정 길이 이진 데이터 버퍼를 나타내는 데 사용되는 데이터 형입니다. `ArrayBuffer` 콘텐츠를 직접 조작할 수는 없습니다; 대신에, 형식화 배열 뷰 또는 특정 형식으로 버퍼를 나타내는 {{jsxref("DataView")}}를 만들어 버퍼의 콘텐츠를 읽고 쓰기 위해 사용합니다.
+
+### 형식화 배열 뷰
+
+형식화 배열 뷰는 자체 설명형 이름이 있으며 `Int8`, `Uint32`, `Float64` 등과 같은 모든 일반 숫자 형을 위한 뷰를 제공합니다. 특별한 형식화 배열 뷰가 하나 있습니다, `Uint8ClampedArray`. 값은 0에서 255 사이로 단속(제한)합니다. 예를 들어, 이는 [Canvas 데이터 처리](/ko/docs/Web/API/ImageData)에 유용합니다.
+
+| Type                                     | Value Range                                                     | Size in bytes | Description                                                                  | Web IDL type          | Equivalent C type               |
+| ---------------------------------------- | --------------------------------------------------------------- | ------------- | ---------------------------------------------------------------------------- | --------------------- | ------------------------------- |
+| {{jsxref("Int8Array")}}         | `-128` to `127`                                                 | 1             | 8-bit two's complement signed integer                                        | `byte`                | `int8_t`                        |
+| {{jsxref("Uint8Array")}}         | `0` to `255`                                                    | 1             | 8-bit unsigned integer                                                       | `octet`               | `uint8_t`                       |
+| {{jsxref("Uint8ClampedArray")}} | `0` to `255`                                                    | 1             | 8-bit unsigned integer (clamped)                                             | `octet`               | `uint8_t`                       |
+| {{jsxref("Int16Array")}}         | `-32768` to `32767`                                             | 2             | 16-bit two's complement signed integer                                       | `short`               | `int16_t`                       |
+| {{jsxref("Uint16Array")}}         | `0` to `65535`                                                  | 2             | 16-bit unsigned integer                                                      | `unsigned short`      | `uint16_t`                      |
+| {{jsxref("Int32Array")}}         | `-2147483648` to `2147483647`                                   | 4             | 32-bit two's complement signed integer                                       | `long`                | `int32_t`                       |
+| {{jsxref("Uint32Array")}}         | `0` to `4294967295`                                             | 4             | 32-bit unsigned integer                                                      | `unsigned long`       | `uint32_t`                      |
+| {{jsxref("Float32Array")}}     | `-3.4E38` to `3.4E38` and `1.2E-38` is the min positive number  | 4             | 32-bit IEEE floating point number (7 significant digits e.g., `1.123456`)    | `unrestricted float`  | `float`                         |
+| {{jsxref("Float64Array")}}     | `-1.8E308` to `1.8E308` and `5E-324` is the min positive number | 8             | 64-bit IEEE floating point number (16 significant digits e.g., `1.123...15`) | `unrestricted double` | `double`                        |
+| {{jsxref("BigInt64Array")}}     | `-2^63` to `2^63 - 1`                                           | 8             | 64-bit two's complement signed integer                                       | `bigint`              | `int64_t (signed long long)`    |
+| {{jsxref("BigUint64Array")}}     | `0` to `2^64 - 1`                                               | 8             | 64-bit unsigned integer                                                      | `bigint`              | `uint64_t (unsigned long long)` |
+
+### DataView
+
+{{jsxref("DataView")}}는 버퍼에 임의 데이터를 읽고 쓰기 위해 getter/setter API를 제공하는 저레벨 인터페이스입니다. 예를 들어, 서로 다른 유형의 데이터를 처리하는 경우 유용합니다. 형식화 배열 뷰는 플랫폼의 본디(native) 바이트 순서(byte-order, {{Glossary("Endianness")}} 참조)에 속합니다. `DataView`로 바이트 순서를 제어할 수 있습니다. 기본으로 big-endian이고 getter/setter 메서드로 little-endian으로 설정될 수 있습니다.
+
+## 형식화 배열을 사용하는 웹 API
+
+- [`FileReader.prototype.readAsArrayBuffer()`]()
+  - : `FileReader.prototype.readAsArrayBuffer()` 메서드는 지정된 [`Blob`](/ko/docs/Web/API/Blob) 또는 [`File`](/ko/docs/Web/API/File)의 콘텐츠를 읽기 시작합니다.
+- [`XMLHttpRequest.prototype.send()`]()
+  - : `XMLHttpRequest` 인스턴스의 `send()` 메서드는 이제 형식화 배열 및 인수로 {{jsxref("ArrayBuffer")}} 객체를 지원합니다.
+- [`ImageData.data`](/ko/docs/Web/API/ImageData)
+  - : `0`에서 `255`까지 정수값으로 RGBA 순 데이터를 포함하는 1차원 배열을 나타내는 {{jsxref("Uint8ClampedArray")}}입니다.
+
+## 예
+
+### 버퍼와 뷰 사용하기
+
+우선, 여기서 16바이트 고정 길이로 버퍼를 만들어야 합니다:
+
+```js
+var buffer = new ArrayBuffer(16);
+```
+
+이 시점에서, 바이트가 모두 0으로 미리 초기화된 메모리 덩어리가 있습니다. 그렇지만 이거 가지고 할 수 있는 게 많지 않습니다. 실제 16바이트 길이인지 확인할 수 있고 대략 그런 정도입니다:
+
+```js
+if (buffer.byteLength === 16) {
   console.log("Yes, it's 16 bytes.");
 } else {
   console.log("Oh no, it's the wrong size!");
 }
-
+``` -

정말 이 버퍼로 작업할 수 있기 전에, 뷰를 만들어야 합니다. 32비트 부호있는 정수 배열로 버퍼의 데이터를 다루는 뷰를 만듭시다:

+정말 이 버퍼로 작업할 수 있기 전에, 뷰를 만들어야 합니다. 32비트 부호있는 정수 배열로 버퍼의 데이터를 다루는 뷰를 만듭시다: -
var int32View = new Int32Array(buffer);
-
+```js +var int32View = new Int32Array(buffer); +``` -

이제 보통 배열처럼 배열 내 필드에 액세스할 수 있습니다:

+이제 보통 배열처럼 배열 내 필드에 액세스할 수 있습니다: -
for (var i = 0; i < int32View.length; i++) {
+```js
+for (var i = 0; i < int32View.length; i++) {
   int32View[i] = i * 2;
 }
-
+``` -

이는 배열의 4항목을 값 0, 2, 4 및 6으로 채웁니다 (4항목이 각각 4바이트에 총 16바이트가 됩니다).

+이는 배열의 4항목을 값 0, 2, 4 및 6으로 채웁니다 (4항목이 각각 4바이트에 총 16바이트가 됩니다). -

같은 데이터에 여러 뷰

+### 같은 데이터에 여러 뷰 -

상황은 당신이 같은 데이터에 여러 뷰를 만들 수 있음을 고려하는 경우 정말 흥미로워지기 시작합니다. 예를 들어, 위 코드가 주어지면 다음과 같이 계속할 수 있습니다:

+상황은 당신이 같은 데이터에 여러 뷰를 만들 수 있음을 고려하는 경우 정말 흥미로워지기 시작합니다. 예를 들어, 위 코드가 주어지면 다음과 같이 계속할 수 있습니다: -
var int16View = new Int16Array(buffer);
+```js
+var int16View = new Int16Array(buffer);
 
-for (var i = 0; i < int16View.length; i++) {
+for (var i = 0; i < int16View.length; i++) {
   console.log("Entry " + i + ": " + int16View[i]);
 }
-
+``` -

여기서 우리는 기존 32비트 뷰와 같은 버퍼를 공유하는 16비트 정수 뷰를 만들고 16비트 정수로 버퍼 내 모든 값을 출력합니다. 이제 우리는 출력 0, 0, 2, 0, 4, 0, 6, 0을 얻습니다.

+여기서 우리는 기존 32비트 뷰와 같은 버퍼를 공유하는 16비트 정수 뷰를 만들고 16비트 정수로 버퍼 내 모든 값을 출력합니다. 이제 우리는 출력 0, 0, 2, 0, 4, 0, 6, 0을 얻습니다. -

그렇지만 한 단계 더 앞으로 갈 수 있습니다. 다음을 생각해 보세요:

+그렇지만 한 단계 더 앞으로 갈 수 있습니다. 다음을 생각해 보세요: -
int16View[0] = 32;
+```js
+int16View[0] = 32;
 console.log("Entry 0 in the 32-bit array is now " + int32View[0]);
-
+``` -

이로부터 출력은 "Entry 0 in the 32-bit array is now 32"입니다. 즉, 두 배열은 확실히 그저 같은 데이터 버퍼 상의 뷰입니다, 버퍼를 서로 다른 형식으로 다루는. 모든 뷰 유형으로 이를 할 수 있습니다.

+이로부터 출력은 "Entry 0 in the 32-bit array is now 32"입니다. 즉, 두 배열은 확실히 그저 같은 데이터 버퍼 상의 뷰입니다, 버퍼를 서로 다른 형식으로 다루는. 모든 [뷰 유형](/ko/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects "Typed array subclasses")으로 이를 할 수 있습니다. -

복잡한 데이터 구조(체)와 작업하기

+### 복잡한 데이터 구조(체)와 작업하기 -

단일 버퍼를 서로 다른 형인 여러 뷰(버퍼 내 서로 다른 오프셋에서 시작하는)와 결합시켜, 여러 데이터 형을 포함하는 데이터 객체와 상호 작용할 수 있습니다. 예를 들어, 이는 WebGL, 데이터 파일 또는 js-ctypes를 쓰는 동안 사용해야 하는 C 구조체에서 복잡한 데이터 구조와 상호 작용케 합니다.

+단일 버퍼를 서로 다른 형인 여러 뷰(버퍼 내 서로 다른 오프셋에서 시작하는)와 결합시켜, 여러 데이터 형을 포함하는 데이터 객체와 상호 작용할 수 있습니다. 예를 들어, 이는 [WebGL](/ko/docs/Web/WebGL "WebGL"), 데이터 파일 또는 [js-ctypes](/ko/docs/Mozilla/js-ctypes "js-ctypes")를 쓰는 동안 사용해야 하는 C 구조체에서 복잡한 데이터 구조와 상호 작용케 합니다. -

이 C 구조체를 생각해 보세요:

+이 C 구조체를 생각해 보세요: -
struct someStruct {
+```cpp
+struct someStruct {
   unsigned long id;
   char username[16];
   float amountDue;
-};
+}; +``` -

이 같은 형식으로 데이터를 포함하는 버퍼에 액세스할 수 있습니다:

+이 같은 형식으로 데이터를 포함하는 버퍼에 액세스할 수 있습니다: -
var buffer = new ArrayBuffer(24);
+```js
+var buffer = new ArrayBuffer(24);
 
 // ... 버퍼 내의 데이터를 읽어들임 ...
 
 var idView = new Uint32Array(buffer, 0, 1);
 var usernameView = new Uint8Array(buffer, 4, 16);
-var amountDueView = new Float32Array(buffer, 20, 1);
+var amountDueView = new Float32Array(buffer, 20, 1); +``` -

그런 뒤, 예를 들어 amountDueView[0]로 지불할 요금(amount due)을 액세스할 수 있습니다.

+그런 뒤, 예를 들어 `amountDueView[0]`로 지불할 요금(amount due)을 액세스할 수 있습니다. -
주의: C 구조체에서 데이터 구조 정렬은 플랫폼에 의존합니다. 이러한 패딩(padding) 차이에 대해 조심하고 고려하세요.
+> **참고:** **주의:** C 구조체에서 [데이터 구조 정렬](http://en.wikipedia.org/wiki/Data_structure_alignment "data structure alignment")은 플랫폼에 의존합니다. 이러한 패딩(padding) 차이에 대해 조심하고 고려하세요. -

보통 배열로 변환

+### 보통 배열로 변환 -

형식화 배열을 처리한 뒤, 때때로 {{jsxref("Array")}} 프로토타입의 도움을 받기 위해 보통 배열로 다시 변환하는 게 유용합니다. 이는 {{jsxref("Array.from")}} 또는 Array.from이 지원되지 않는 경우 다음 코드를 사용하여 수행할 수 있습니다.

+형식화 배열을 처리한 뒤, 때때로 {{jsxref("Array")}} 프로토타입의 도움을 받기 위해 보통 배열로 다시 변환하는 게 유용합니다. 이는 {{jsxref("Array.from")}} 또는 `Array.from`이 지원되지 않는 경우 다음 코드를 사용하여 수행할 수 있습니다. -
var typedArray = new Uint8Array([1, 2, 3, 4]),
+```js
+var typedArray = new Uint8Array([1, 2, 3, 4]),
     normalArray = Array.prototype.slice.call(typedArray);
 normalArray.length === 4;
 normalArray.constructor === Array;
-
+``` -

명세서

+## 명세서 {{Specifications}} -

참조

+## 참조 - +- [*Base64*로 인코딩된 문자열에서 `ArrayBuffer` 또는 형식화 배열 얻기](/ko/docs/Web/JavaScript/Base64_encoding_and_decoding#Appendix.3A_Decode_a_Base64_string_to_Uint8Array_or_ArrayBuffer "Decode_a_Base64_string_to_Uint8Array_or_ArrayBuffer") +- [`StringView` - 형식화 배열에 기반을 둔 문자열의 C-like 표현](/ko/docs/Code_snippets/StringView) +- [형식화 배열로 빠른 Canvas 픽셀 조작](https://hacks.mozilla.org/2011/12/faster-canvas-pixel-manipulation-with-typed-arrays "Faster Canvas Pixel Manipulation with Typed Arrays") +- [형식화 배열: 브라우저에서 이진 데이터](http://www.html5rocks.com/en/tutorials/webgl/typed_arrays) +- {{Glossary("Endianness")}}