recursal/MDN huggingface dataset:
EvalError() コンストラクター
====================

**`EvalError`** コンストラクターは、グローバルの `eval()` 関数に関する新しいエラーを生成します。この例外はもう JavaScript からは使用されていませんが、 `EvalError` オブジェクトは互換性のために残っています。object

構文
--
```

new EvalError([message[, fileName[, lineNumber]]])
```

### 引数

`message` 省略可

人間が読むためのエラーの説明です。

`fileName` 省略可

例外が発生したコードを含むファイルの名前です。

`lineNumber` 省略可

例外が発生したコードの行番号です。

例
-

`EvalError` は現在の ECMAScript 仕様書では使用されておらず、ランタイムから発生することもありません。しかし、このオブジェクト自身は仕様書の以前のバージョンとの後方互換性のために残っています。

### EvalError の生成


```js
try {
  throw new EvalError("Hello", "someFile.js", 10);
} catch (e) {
  console.log(e instanceof EvalError); // true
  console.log(e.message); // "Hello"
  console.log(e.name); // "EvalError"
  console.log(e.fileName); // "someFile.js"
  console.log(e.lineNumber); // 10
  console.log(e.columnNumber); // 0
  console.log(e.stack); // "@Scratchpad/2:2:9\n"
}
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-nativeerror-constructors |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Error`
* `eval()`
Map.prototype[@@iterator]()
===========================

**`@@iterator`** は `Map` オブジェクトのプロパティで、反復可能プロトコルを実装します。これにより、マップが反復可能プロトコルを受け入れるほとんどの構文、たとえばスプレッド構文や `for...of` ループなどで使用できるようになります。マップのキーと値のペアを返すイテレーターを返します。

初期値は、 `entries` メソッドの初期値と同じ関数オブジェクトです。

試してみましょう
--------

構文
--


```js
map[Symbol.iterator]()
```

### 返値

返値は `Map.prototype.entries()` と同じ、マップのキーと値のペアを生成する新しい反復可能なイテレーターオブジェクトを返します。

例
-

### for..of を使用した反復処理

このメソッドを直接呼び出す必要があることはめったにないことに注意してください。`iterator` メソッドが存在することで `Map` オブジェクトを反復可能にし、 `for...of` ループなどの反復処理構文が、自動的にこのメソッドを呼び出してループのためのイテレータを取得することができます。


```js
const myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");

for (const entry of myMap) {
  console.log(entry);
}
// ["0", "foo"]
// [1, "bar"]
// [{}, "baz"]

for (const [key, value] of myMap) {
  console.log(`${key}: ${value}`);
}
// 0: foo
// 1: bar
// [Object]: baz
```

### 手動でイテレーターを手繰る

返されたイテレーターオブジェクトの `next()` メソッドを手動で呼び出すと、反復処理を最大限に制御することができます。


```js
const myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");

const mapIter = myMap[Symbol.iterator]();

console.log(mapIter.next().value); // ["0", "foo"]
console.log(mapIter.next().value); // [1, "bar"]
console.log(mapIter.next().value); // [Object, "baz"]
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype-@@iterator |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Map.prototype.entries()`
* `Map.prototype.keys()`
* `Map.prototype.values()`
Map.prototype.size
==================

**`size`** アクセサープロパティは、 `Map` オブジェクトにある要素の数を返します。

試してみましょう
--------

解説
--

`size` の値は `Map` オブジェクトにいくつの項目があるかを表す整数値です。 `size` の set アクセサー関数は `undefined` です。このプロパティを変更することはできません。

例
-

### size の使用


```js
const myMap = new Map();
myMap.set("a", "alpha");
myMap.set("b", "beta");
myMap.set("g", "gamma");

console.log(myMap.size); // 3
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-map.prototype.size |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Map`
Map.prototype.values()
======================

**`values()`** メソッドは、 `Map` オブジェクトに挿入された要素を挿入順に列挙する新しい **イテレーター** オブジェクトを返します。

試してみましょう
--------

構文
--


```js
values()
```

### 返値

`Map` の新しいイテレーターオブジェクト。

例
-

### values() の使用


```js
const myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");

const mapIter = myMap.values();

console.log(mapIter.next().value); // "foo"
console.log(mapIter.next().value); // "bar"
console.log(mapIter.next().value); // "baz"
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.values |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Map.prototype.entries()`
* `Map.prototype.keys()`
Map.prototype.keys()
====================

**`keys()`** メソッドは、 `Map` オブジェクトに挿入された要素のキーを挿入順に列挙する新しいイテレーターオブジェクトを返します。この具体的な用途では、このイテレーターオブジェクトは反復可能オブジェクトでもあるので、 for...of ループを使用することができます。

試してみましょう
--------

構文
--


```js
keys()
```

### 返値

`Map` の新しいイテレーターオブジェクト。

例
-

### keys() の使用


```js
const myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");

const mapIter = myMap.keys();

console.log(mapIter.next().value); // "0"
console.log(mapIter.next().value); // 1
console.log(mapIter.next().value); // {}
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.keys |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Map.prototype.entries()`
* `Map.prototype.values()`
Map.prototype.entries()
=======================

**`entries()`** メソッドは、挿入順で `Map` オブジェクトのそれぞれの要素に対する `[key, value]` のペアを含む新しい イテレーター オブジェクトを返します。この具体的な例では、このイテレーターオブジェクトは反復可能オブジェクトでもあるので、 for-of ループを使用することができます。プロトコル `[Symbol.iterator]` が使用されると、呼び出されたときにこのイテレーター自身を返す関数を返します。

試してみましょう
--------

構文
--


```js
entries()
```

### 返値

新しい `Map` のイテレーターオブジェクトです。

例
-

### entries() の使用


```js
const myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");

const mapIter = myMap.entries();

console.log(mapIter.next().value); // ["0", "foo"]
console.log(mapIter.next().value); // [1, "bar"]
console.log(mapIter.next().value); // [Object, "baz"]
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.entries |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Map.prototype.keys()`
* `Map.prototype.values()`
Map.prototype.get()
===================

**`get()`** メソッドは、指定された要素を `Map` オブジェクトから返します。指定されたキーに関連付けられた値がオブジェクトである場合は、そのオブジェクトの参照を受け取ることになり、そのオブジェクトに対して変更を行った場合は、 `Map` オブジェクトの中にあるものに変更が行われます。

試してみましょう
--------

構文
--


```js
get(key)
```

### 引数

`key`

`Map` オブジェクトから返される要素のキーです。

### 返値

指定されたキーに関連付けられた要素を返します。 `Map` オブジェクト内にキーが見つからない場合は、`undefined` を返します。

例
-

### get() の使用


```js
const myMap = new Map();
myMap.set("bar", "foo");

console.log(myMap.get("bar")); // "foo" を返す
console.log(myMap.get("baz")); // undefined を返す
```

### get() を使用して、オブジェクトの参照を取得


```js
const arr = [];
const myMap = new Map();
myMap.set("bar", arr);

myMap.get("bar").push("foo");

console.log(arr); // ["foo"]
console.log(myMap.get("bar")); // ["foo"]
```


マップが元のオブジェクトへの参照を保持することで、実質的にオブジェクトがガベージコレクトされないことを意味し、予期せぬメモリー問題を引き起こす可能性があることに注意してください。もし、マップに格納されるオブジェクトが元のオブジェクトと同じ寿命を持つようにしたい場合は、 `WeakMap` を使用することを検討してください。

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.get |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Map`
* `Map.prototype.set()`
* `Map.prototype.has()`
Map.prototype.has()
===================

**`has()`** メソッドは、指定されたキーに対する要素が存在するかどうかを示す論理値を返します。

試してみましょう
--------

構文
--


```js
has(key)
```

### 引数

`key`

`Map` オブジェクト内に存在するかテストする要素のキーです。

### 返値

特定のキーに対する要素が `Map` オブジェクト内に存在していたら、`true` を返します。さもなければ、`false` を返します。

例
-

### has() の使用


```js
const myMap = new Map();
myMap.set("bar", "foo");

console.log(myMap.has("bar")); // true
console.log(myMap.has("baz")); // false
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.has |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Map`
* `Map.prototype.set()`
* `Map.prototype.get()`
Map.prototype.clear()
=====================

**`clear()`** メソッドは `Map` オブジェクトからすべての要素を削除します。

試してみましょう
--------

構文
--


```js
clear()
```

### 返値

`undefined`.

例
-

### clear() の使用


```js
const myMap = new Map();
myMap.set("bar", "baz");
myMap.set(1, "foo");

console.log(myMap.size); // 2
console.log(myMap.has("bar")); // true

myMap.clear();

console.log(myMap.size); // 0
console.log(myMap.has("bar")); // false
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.clear |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Map`
Map.prototype.set()
===================

**`set()`** メソッドは、指定されたキーと値を持つ要素を `Map` オブジェクトに追加したり、更新したりします。

試してみましょう
--------

構文
--


```js
set(key, value)
```

### 引数

`key`

`Map` オブジェクトに追加する要素のキーです。キーはいずれかの JavaScript 型 （いずれかのプリミティブ値または任意の型の JavaScript オブジェクト）です。

`value`

`Map` オブジェクトに追加する要素の値です。値はいずれかの JavaScript 型 （いずれかのプリミティブ値または任意の型の JavaScript オブジェクト）です。

### 返値

`Map` オブジェクトです。

例
-

### set() の使用


```js
let myMap = new Map();

// マップに新しい要素を追加する
myMap.set("bar", "foo");
myMap.set(1, "foobar");

// マップにある要素を更新する
myMap.set("bar", "baz");
```

### set() のメソッドチェーンの使用

`set()` メソッドは `Map` オブジェクトを返すため、以下のようにメソッドチェーンを作ることができます。


```js
// チェーンを使用してマップに新しい要素を追加する
myMap.set("bar", "foo").set(1, "foobar").set(2, "baz");
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.set |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Map`
* `Map.prototype.get()`
* `Map.prototype.has()`
Map() コンストラクター
==============

**`Map()` コンストラクター**は、 `Map` オブジェクトを生成します。

構文
--
```

new Map([iterable])
```

### 引数

`iterable`

`Array` または他の反復処理可能 (en-US)なオブジェクトで、要素はキーと値の組です。 (たとえば、 `[[ 1, 'one' ],[ 2, 'two' ]]` のような 2 つの要素を持つ配列。) それぞれのそれぞれのキーと値の組が新しい `Map` に追加されます。

例
-

### 新しい Map の生成


```js
let myMap = new Map([
  [1, "one"],
  [2, "two"],
  [3, "three"],
]);
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-map-constructor |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Set`
* `WeakMap`
* `WeakSet`
get Map[@@species]
==================

**`Map[@@species]`** は静的アクセサープロパティで、 `Map` オブジェクトをコピーする方法を示す未使用のアクセサープロパティです。

構文
--


```js
Map[Symbol.species]
```

### 返値

`get @@species` が呼び出されたコンストラクター (`this`) の値です。返さる値は、 `Map` インスタンスのコピーを構築するために使用されます。

解説
--

species アクセサープロパティは `Map` オブジェクトのデフォルトコンストラクターを返します。サブクラスのコンストラクターは、コンストラクターに代入して変更することによりオーバーライドすることができます。

**メモ:** このプロパティは現在、どの `Map` のメソッドからも使われていません。

例
-

### 通常のオブジェクトの species

species プロパティはデフォルトコンストラクター関数を返しますので、 `Map` オブジェクトには `Map` コンストラクターを返します。


```js
Map[Symbol.species]; // function Map()
```

### 派生オブジェクトの species

`Map` の独自サブクラスのインスタンス、例えば `MyMap` では、`MyMap` の species は `MyMap` コンストラクターになっています。しかし、これをオーバーライドして、派生クラスのメソッド内で親の `Map` オブジェクトを返したい場合があります。


```js
class MyMap extends Map {
  // MyMap の species を親の Map コンストラクターで上書き
  static get [Symbol.species]() {
    return Map;
  }
}
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-map-@@species |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Map`
* `Symbol.species`
Map.prototype.forEach()
=======================

**`forEach()`** メソッドは、指定された関数を `Map` オブジェクト内にあるキーと値のペアそれぞれに対して 1 回ずつ、挿入順に実行します。

試してみましょう
--------

構文
--


```js
// アロー関数
forEach(() => { /\* … \*/ } )
forEach((value) => { /\* … \*/ } )
forEach((value, key) => { /\* … \*/ } )
forEach((value, key, map) => { /\* … \*/ } )

// コールバック関数
forEach(callbackFn)
forEach(callbackFn, thisArg)

// インラインコールバック関数
forEach(function() { /\* … \*/ })
forEach(function(value) { /\* … \*/ })
forEach(function(value, key) { /\* … \*/ })
forEach(function(value, key, map) { /\* … \*/ })
forEach(function(value, key, map) { /\* … \*/ }, thisArg)
```

### 引数

`callbackFn`

マップのそれぞれの項目に対して実行される関数。以下の引数を取ります。

`value` 省略可

それぞれの反復処理における値です。

`key` 省略可

それぞれの反復処理におけるキーです。

`map` 省略可

反復処理されるマップです。


`thisArg` 省略可

`callbackFn` の実行時に `this` として使用される値です。

### 返値

`undefined` です。

解説
--

`forEach` メソッドは、指定された関数 `callbackFn` を、マップの実在するそれぞれのキーに対して一度ずつ呼び出します。これは削除されたキーに対しては呼び出しません。ただし、存在していて `undefined` である値に対しては呼び出します。

`callbackFn` は次の **3 つの引数**で呼び出されます。

* 項目の値 (`value`)
* 項目のキー (`key`)
* 走査中の **`Map` オブジェクト**

`thisArg` 引数が `forEach` に指定されると、 `callbackFn` の呼び出し時にそのオブジェクトが `this` の値として使用されます。与えられなかった場合は、 `undefined` が `this` の値として渡されます。 `callback` によって究極に管理される `this` の値は、関数から見える `this` を特定する一般規則に従います。

それぞれの値に対して一度ずつ実行されますが、 `forEach` が終了するまでに削除され再追加された場合は除きます。 `callback` はその前に削除された値に対しては実行されません。 `forEach` が終了する前に追加された新しい値に対しては実行されます。

例
-

### Map オブジェクトの内容を表示

以下のコードは `Map` オブジェクト内の各要素を 1 行ずつ出力します。


```js
function logMapElements(value, key, map) {
  console.log(`map.get('${key}') = ${value}`);
}
new Map([
  ["foo", 3],
  ["bar", {}],
  ["baz", undefined],
]).forEach(logMapElements);
// ログ出力:
// "map.get('foo') = 3"
// "map.get('bar') = [object Object]"
// "map.get('baz') = undefined"
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.foreach |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Array.prototype.forEach()`
* `Set.prototype.forEach()`
Map.prototype.delete()
======================

**`delete()`** メソッドは `Map` オブジェクトから特定の要素を削除します。

試してみましょう
--------

構文
--


```js
delete(key)
```

### 引数

`key`

`Map` オブジェクトから削除する要素のキーです。

### 返値

`Map` オブジェクトの要素が削除されたら `true` を、要素が存在しなければ `false` を返します。

例
-

### delete() メソッドの使用


```js
const myMap = new Map();
myMap.set("bar", "foo");

console.log(myMap.delete("bar")); // true を返す。正常に削除された。
console.log(myMap.has("bar")); // false を返す。 "bar" の要素がもう存在しない。
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.delete |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Map`
Uint16Array() コンストラクター
======================

**`Uint16Array()`** は型付き配列のコンストラクターで、プラットフォームのバイト順による 16 ビット符号なし整数値の配列を生成します。

構文
--
```

new Uint16Array(); // new in ES2017
new Uint16Array(length);
new Uint16Array(typedArray);
new Uint16Array(object);
new Uint16Array(buffer [, byteOffset [, length]]);
```

### 引数

`length`

`length` 引数付きで呼び出されると、メモリ内に内部的な配列バッファーを作成し、大きさは `length` *を `BYTES_PER_ELEMENT`* で乗じたバイト数になり、ゼロになることもあります。

`typedArray`

`typedArray` 引数付きで呼び出されると、これはあらゆる型付き配列型 (例えば `Int32Array`) にすることができますが、 `typedArray` を新しい型付き配列にコピーします。 `typedArray` の中のそれぞれの値は、新しい配列にコピーされる前にコンストラクターの対応する型に変換されます。新しい型付き配列の長さは `typedArray` 引数の長さと同じになります。

`object`

`object` 引数付きで呼び出されると、あたかも `TypedArray.from()` メソッドであるかのように新しい型付き配列が生成されます。

`buffer`, `byteOffset`, `length`

`buffer` と、オプションで `byteOffset` と `length` 引数を指定して呼び出されると、指定された `ArrayBuffer` を表示する型付き配列ビューが生成されます。 `byteOffset` および `length` 引数は、型付き配列ビューが表示するメモリ範囲を指定する。 両方を省略した場合は `buffer` の全てを表示し、 `length` のみを省略した場合は `buffer` の残りを表示します。

解説
--

**`Uint16Array()`** は型付き配列のコンストラクターで、プラットフォームのバイト順による 16 ビット符号なし整数値の配列を生成します。バイト順の制御が必要な場合は、代わりに `DataView` を使用してください。中身は `0` で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。

ECMAScript 2015 から、 `Uint16Array` コンストラクターは構築に `new` 演算子が必要になりました。 `Uint16Array` コンストラクターを `new` なしで関数として呼び出すと、 `TypeError` が発生するようになりました。


```js
var dv = Uint16Array([1, 2, 3]);
// TypeError: calling a builtin Uint16Array constructor
// without new is forbidden
```



```js
var dv = new Uint16Array([1, 2, 3]);
```

例
-

### 様々な方法による Uint16Array の生成


```js
// From a length
var uint16 = new Uint16Array(2);
uint16[0] = 42;
console.log(uint16[0]); // 42
console.log(uint16.length); // 2
console.log(uint16.BYTES\_PER\_ELEMENT); // 2

// From an array
var arr = new Uint16Array([21, 31]);
console.log(arr[1]); // 31

// From another TypedArray
var x = new Uint16Array([21, 31]);
var y = new Uint16Array(x);
console.log(y[0]); // 21

// From an ArrayBuffer
var buffer = new ArrayBuffer(8);
var z = new Uint16Array(buffer, 0, 4);

// From an iterable
var iterable = (function\* () {
  yield\* [1, 2, 3];
})();
var uint16 = new Uint16Array(iterable);
// Uint16Array[1, 2, 3]
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-typedarray-constructors |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* JavaScript 型付き配列
* `ArrayBuffer`
* `DataView`
Boolean() コンストラクター
==================

**`Boolean()`** コンストラクターは `Boolean` オブジェクトを生成するために使用します。

試してみましょう
--------

構文
--


```js
new Boolean();
new Boolean(value);
```

### 引数

`value` 省略可

この `Boolean` オブジェクトの初期値です。

例
-

### `Boolean` を生成して初期値を `false` とする


```js
var bNoParam = new Boolean();
var bZero = new Boolean(0);
var bNull = new Boolean(null);
var bEmptyString = new Boolean("");
var bfalse = new Boolean(false);
```

### `Boolean` を生成して初期値を `true` とする


```js
var btrue = new Boolean(true);
var btrueString = new Boolean("true");
var bfalseString = new Boolean("false");
var bSuLin = new Boolean("Su Lin");
var bArrayProto = new Boolean([]);
var bObjProto = new Boolean({});
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-boolean-constructor |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* Boolean
Boolean.prototype.valueOf()
===========================

**`valueOf()`** メソッドは、`Boolean` オブジェクトのプリミティブ値を返します。

試してみましょう
--------

構文
--


```js
valueOf();
```

### 返値

この `Boolean` オブジェクトのプリミティブ値です。

解説
--

`valueOf()` は `Boolean` のメソッドで、 `Boolean` オブジェクトのプリミティブ値または論理値データ型としての `Boolean` リテラルを返します。

このメソッドはたいてい JavaScript によって内部的に呼び出され、コードで明示的に呼び出されることはありません。

例
-

### `valueOf()` の使用


```js
x = new Boolean();
myVar = x.valueOf(); // false を myVar に代入
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-boolean.prototype.valueof |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Object.prototype.valueOf()`
Boolean.prototype.toString()
============================

**`toString()`** メソッドは、指定された Boolean オブジェクトを表す文字列を返します。

試してみましょう
--------

構文
--


```js
toString();
```

### 返値

指定された `Boolean` オブジェクトを表す文字列です。

解説
--

`Boolean` オブジェクトは `Object` オブジェクトの `toString` メソッドを上書きしており、 `Object.prototype.toString()` を継承していません。 `Boolean` オブジェクトでは、 `toString` メソッドはオブジェクトを文字列で表したものを返します。

JavaScript は `toString()` メソッドを、 `Boolean` が文字列値として表現されるべき場合や、 `Boolean` が文字列の結合で参照されたときに自動的に呼び出します。

`Boolean` オブジェクトと論理値では、組み込みの `toString` メソッドはその `Boolean` オブジェクトの値によって "`true`" か "`false`" の文字列を返します。

例
-

### `toString` の使用

以下のコードでは、`flag.toString()` は "`true`" を返します。


```js
var flag = new Boolean(true);
var myVar = flag.toString();
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-boolean.prototype.tostring |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Object.prototype.toString()`
InternalError() コンストラクター
========================

**非標準:** この機能は標準ではなく、標準化の予定もありません。公開されているウェブサイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。

**`InternalError()`** コンストラクターは、 JavaScript エンジンで内部的に発生したエラーを示すエラーを生成します。例えば、 "**InternalError**: too much recursion" などです。

構文
--
```

new InternalError([message[, fileName[, lineNumber]]])
```

### 引数

`message` 省略可

人間が読むためのエラーの説明です。

`fileName` 省略可

例外が発生したコードを含むファイルの名前です。

`lineNumber` 省略可

例外が発生したコードの行番号です。

例
-

### 新しい InternalError の生成


```js
new InternalError("Engine failure");
```

仕様書
---

標準の一部ではありません。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Error`
AsyncFunction() コンストラクター
========================

Baseline Widely available
-------------------------

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.

* Learn more
* See full compatibility
* Report feedback
**`AsyncFunction()`** コンストラクターは `AsyncFunction` オブジェクトを生成します。

なお、`AsyncFunction` はグローバルオブジェクトではないことに注意してください。これは以下のようなコードで取得することができます。


```js
const AsyncFunction = async function () {}.constructor;
```


`AsyncFunction()` コンストラクターは直接使用することを意図されておらず、 `Function()` の説明で述べた注意事項はすべて `AsyncFunction()` に適用されます。

構文
--


```js
new AsyncFunction(functionBody)
new AsyncFunction(arg0, functionBody)
new AsyncFunction(arg0, arg1, functionBody)
new AsyncFunction(arg0, arg1, /\* … ,\*/ argN, functionBody)

AsyncFunction(functionBody)
AsyncFunction(arg0, functionBody)
AsyncFunction(arg0, arg1, functionBody)
AsyncFunction(arg0, arg1, /\* … ,\*/ argN, functionBody)
```


**メモ:** `AsyncFunction()` は `new` があってもなくても呼び出すことができます。どちらも新しい `AsyncFunction` インスタンスを生成します。

### 引数

`Function()` を参照してください。

例
-

### AsyncFunction() コンストラクターから非同期関数を生成


```js
function resolveAfter2Seconds(x) {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}

const AsyncFunction = async function () {}.constructor;

const fn = new AsyncFunction(
  "a",
  "b",
  "return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);",
);

fn(10, 20).then((v) => {
  console.log(v); // prints 30 after 4 seconds
});
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-async-function-constructor |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `async function` 宣言
* `async function` 式
* `Function()` コンストラクター
Error.prototype.lineNumber
==========================

**非標準:** この機能は標準ではなく、標準化の予定もありません。公開されているウェブサイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。

**`lineNumber`** プロパティは、このエラーを起こしたファイル内の行番号が入ります。

例
-

### lineNumber の使用


```js
var e = new Error("Could not parse input");
throw e;
console.log(e.lineNumber); // 2
```

### error イベントを使用した他の例


```js
window.addEventListener("error", function (e) {
  console.log(e.lineNumber); // 5
});
var e = new Error("入力を解釈できません");
throw e;
```


これは標準の機能ではなく、幅広く対応されていません。下記のブラウザーの互換性の表をご覧ください。

仕様書
---

仕様の一部ではありません。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Error.prototype.stack`
* `Error.prototype.columnNumber`
* `Error.prototype.fileName`
Error.prototype.message
=======================

**`message`** プロパティは、人間が読めるエラーの説明です。

解説
--

このプロパティは、利用可能または設定されている場合、エラーの簡潔な説明を含みます。SpiderMonkey は、例外の `message` プロパティを広範囲に渡って使用します。`name` プロパティは `message` プロパティとの組み合わせで、Error の文字列表現を生成するために `Error.prototype.toString()` メソッドにより使用されます。

既定で `message` プロパティは空文字列ですが、この振る舞いは、 `Error` コンストラクターの第一引数としてメッセージを指定することにより、インスタンスを上書きできます。

例
-

### 独自のエラーを発生させる


```js
var e = new Error("Could not parse input");
// e.message は 'Could not parse input'
throw e;
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-error.prototype.message |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Error.prototype.name`
* `Error.prototype.toString()`
Error.prototype.columnNumber
============================

**非標準:** この機能は標準ではなく、標準化の予定もありません。公開されているウェブサイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。

**`columnNumber`** プロパティは、このエラーを起こしたファイルの行内の列番号が入ります。

例
-

### columnNumber の使用


```js
var e = new Error("Could not parse input");
throw e;
console.log(e.columnNumber); // 0
```

仕様書
---

仕様の一部ではありません。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Error.prototype.stack`
* `Error.prototype.lineNumber`
* `Error.prototype.fileName`