Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ko] Iterator.prototype.toArray() 신규 번역 외 #22652

Merged
merged 2 commits into from
Sep 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
title: Iterator.prototype.toArray()
slug: Web/JavaScript/Reference/Global_Objects/Iterator/toArray
l10n:
sourceCommit: 088b56a895d22b6df854a9f26400af7d399f289f
---

{{JSRef}}{{SeeCompatTable}}

{{jsxref("Iterator")}} 인스턴스의 **`toArray()`** 메서드는 해당 반복자로부터 산출된 요소와 함께 새로운 {{jsxref("Array")}} 인스턴스를 생성합니다.

## 구문

```js-nolint
toArray()
```

### 매개변수

없음.

### 반환 값

생성된 순서대로 반복자로부터 온 객체를 포함하는 {{jsxref("Array")}} 인스턴스입니다.

## 예제

### toArray() 사용하기

`iterator.toArray()`는 여러 개의 반복자 헬퍼 메서드가 관련된 경우 체인 연결이 더 쉽다는 점을 제외하면 `Array.from(iterator)` 및 '[...iterator]`와 동일합니다. 다음 예제는 피보나치 수열의 항을 산출하는 반복자를 만들고, 처음 10개의 항을 가져와 홀수를 거른 다음 결과를 배열로 변환하는 예제입니다.

```js
function* fibonacci() {
let current = 1;
let next = 1;
while (true) {
yield current;
[current, next] = [next, current + next];
}
}

const array = fibonacci()
.take(10)
.filter((x) => x % 2 === 0)
.toArray();

console.log(array); // [2, 8, 34]
```

이 처리의 마지막 단계로 `toArray()`를 호출하는 것이 좋습니다. 예를 들어 `fibonacci().take(10).toArray().filter(...)`는 반복자 헬퍼가 느리고 임시 배열을 생성하지 않기 때문에 효율성이 떨어집니다.

## 명세서

{{Specifications}}

## 브라우저 호환성

{{Compat}}

## 같이 보기

- [`core-js`에서의 `Iterator.prototype.toArray` 폴리필](https://github.com/zloirock/core-js#iterator-helpers)
- {{jsxref("Iterator")}}
- {{jsxref("Array.from()")}}
Original file line number Diff line number Diff line change
@@ -1,69 +1,83 @@
---
title: Number.isNaN()
slug: Web/JavaScript/Reference/Global_Objects/Number/isNaN
l10n:
sourceCommit: fb85334ffa4a2c88d209b1074909bee0e0abd57a
---

{{JSRef}}

**`Number.isNaN()`** 메서드는 주어진 값이 {{jsxref("NaN")}}인지 판별합니다. 기존부터 존재한 전역 {{jsxref("isNaN", "isNaN()")}} 함수의 더 엄격한 버전입니다.
**`Number.isNaN()`** 정적 메서드는 전달받은 값이 {{jsxref("NaN")}}인지 여부를 결정하고 입력이 Number 유형이 아니라면 `false`를 반환합니다. 이 함수는 원래의 전역 {{jsxref("isNaN()")}} 함수보다 강력합니다.

{{EmbedInteractiveExample("pages/js/number-isnan.html", "taller")}}

## 구문

```js
Number.isNaN(value);
```js-nolint
Number.isNaN(value)
```

### 매개변수

- `value`
- : {{jsxref("NaN")}}인지 판별할 값.
- : {{jsxref("NaN")}} 일지 검증할 값.

### 반환 값

주어진 값의 유형이 {{jsxref("Number")}}이고 값이 {{jsxref("NaN")}}이면 `true`, 아니면 `false`.
주어진 숫자가 {{jsxref("NaN")}} 값을 가진다면 `true` 불리언 값을, 그렇지 않다면 `false`를 반환합니다.

## 설명

{{jsxref("NaN")}}이 `NaN`인지 계산할 때, 두 동일 연산자 `==`과 `===` 모두 `false`로 평가되므로 값의 `NaN` 여부를 알아내려면 `Number.isNaN()`이 필요합니다. 이 상황은 다른 모든 JavaScript와 다른 특별한 경우입니다.
`Number.isNaN()` 함수는 `NaN`과의 동등성을 확인하는 편리한 방법을 제공합니다. JavaScript에서 [`==`](/ko/docs/Web/JavaScript/Reference/Operators/Equality) 또는 [`===`](/ko/docs/Web/JavaScript/Reference/Operators/Strict_equality) 연산자를 사용하여 `NaN`과의 동등성을 시험할 수 없다는 점을 유의하세요. 모든 다른 값 비교와는 달리, 이 연산자는 한 피연산자가 {{jsxref("NaN")}}일 때 항상 `false`로 평가되며, 또 다른 피연산자가 {{jsxref("NaN")}}일 때도 마찬가지입니다.

JavaScript의 모든 가능한 값 중에서 `x !== x`가 `true`인 경우는 `NaN`뿐이므로, `Number.isNaN(x)`는 `x !== x` 테스트로 대체될 수 있습니다. 다만 후자가 가독성이 떨어진다는 단점이 있습니다.

전역 {{jsxref("isNaN", "isNaN()")}} 함수와 달리, `Number.isNaN()`은 강제로 매개변수를 숫자로 변환하는 문제를 겪지 않습니다. 이는 이제 보통{{jsxref("NaN")}}으로 변환됐을 값이 안전하게 전달되지만, 실제로는 {{jsxref("NaN")}}과 같은 값이 아님을 의미합니다. 이는 또한 오직 숫자형이고 또한 {{jsxref("NaN")}}인 값만이 `true`를 반환함을 뜻합니다.
전역 {{jsxref("isNaN()")}} 함수와는 달리, `Number.isNaN()` 메서드는 매개변수를 강제로 숫자로 변환하지 않습니다. 이로 인해 일반적으로는 {{jsxref("NaN")}}으로 변환되지만 실제로는 {{jsxref("NaN")}}과 같은 값이 아닌 값들을 안전하게 전달할 수 있습니다. 또한 이는 {{jsxref("NaN")}}인 Number 타입의 값만이 `true`를 반환한다는 것을 의미합니다.

## 예제

### isNaN() 사용하기

```js
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0); // true
Number.isNaN(37); // false
```

### Number.isNaN() 과 전역 isNaN()과의 차이점

// 예를 들면 이들은 global isNaN()으로는 true가 됐을 것임
Number.isNaN("NaN"); // false
Number.isNaN(undefined); // false
Number.isNaN({}); // false
Number.isNaN("blabla"); // false
`Number.isNaN()`은 매개변수를 숫자로 변환하려는 시도를 하지 않아서 숫자가 아니면 언제나 `false`를 반환합니다. 아래 코드는 모두 `false`입니다.

// 모두
```js
Number.isNaN("NaN");
Number.isNaN(undefined);
Number.isNaN({});
Number.isNaN("blabla");
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(37);
Number.isNaN("37");
Number.isNaN("37.37");
Number.isNaN("");
Number.isNaN(" ");
```

## 폴리필
전역 {{jsxref("isNaN()")}}은 매개변수를 숫자로 강제로 변환시킵니다.

```js
Number.isNaN =
Number.isNaN ||
function (value) {
return value !== value;
};
isNaN("NaN"); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN("blabla"); // true
isNaN(true); // false, 1로 강제 변환됩니다
isNaN(null); // false, 0으로 강제 변환됩니다
isNaN("37"); // false, 37로 강제 변환됩니다
isNaN("37.37"); // false, 37.37로 강제 변환됩니다
isNaN(""); // false, 0으로 강제 변환됩니다
isNaN(" "); // false, 0으로 강제 변환됩니다
```

## 명세
## 명세서

{{Specifications}}

Expand All @@ -73,5 +87,6 @@ Number.isNaN =

## 같이 보기

- [`core-js`에서의 `Number.isNaN` 폴리필](https://github.com/zloirock/core-js#ecmascript-number)
- {{jsxref("Number")}}
- {{jsxref("isNaN", "isNaN()")}}
- {{jsxref("isNaN()")}}