Skip to content

Commit

Permalink
[ko] Iterator.prototype.toArray() 신규 번역 외 (#22652)
Browse files Browse the repository at this point in the history
* [ko] Iterator.prototype.toArray() 신규 번역 외

- Iterator.prototype.toArray() 신규 번역
- Number.isNaN() 최신 동기화

* 리뷰사항 수정
  • Loading branch information
wisedog authored Sep 4, 2024
1 parent 9afa36c commit 3aa24dc
Show file tree
Hide file tree
Showing 2 changed files with 101 additions and 22 deletions.
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()")}}

0 comments on commit 3aa24dc

Please sign in to comment.