Functions
JavaScript の関数はファーストクラスオブジェクトです。関数宣言、関数式、デフォルト引数、レスト引数(...args)などの機能を持ちます。
概要
JavaScript の関数はファーストクラスオブジェクトです。関数宣言、関数式、デフォルト引数、レスト引数(...args)などの機能を持ちます。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 1 | 12 | 1 | 1 | 18 | 1 | |
| [Symbol.hasInstance]() は Function インスタンスのメソッドで、コンストラクター関数がオブジェクトをそのコンストラクターのインスタンスの一つであると認識するかどうかを決定するデフォルトの手続きを定義します。これは、instanceof 演算子から呼ばれます。 | 50 | 15 | 50 | 10 | 50 | 10 |
| Function() コンストラクターは、新しい Function オブジェクトを生成します。コンストラクターを直接呼び出すと動的に関数を生成することができますが、セキュリティや、 Global_Objects/eval と似た性能の(ただし、はるかに重要性の低い)問題を抱えます。ただし eval とは異なり、 Function コンストラクターはグローバルスコープで実行される関数のみを生成します。 | 1 | 12 | 1 | 1 | 18 | 1 |
| apply() メソッドは、 this 値を指定して関数を呼び出し、 arguments は配列 (または配列風オブジェクト) として提供します。 | 1 | 12 | 1 | 1 | 18 | 1 |
Function.apply.generic arrays as arguments ES 5.1: `引数`としての一般的な配列のようなオブジェクト | 17 | 12 | 4 | 6 | 18 | 6 |
| bind() は Function インスタンスのメソッドで、新しい関数を生成し、呼び出し時に、 this キーワードを指定された値に設定し、指定された引数の並びを、新しい関数が呼び出された際に指定されたものより前にして呼び出します。 | 7 | 12 | 4 | 5.1 | 18 | 6 |
| call() は Function インスタンスのメソッドで、 this の値と、独立して提供された引数によって関数を呼び出します。 | 1 | 12 | 1 | 1 | 18 | 1 |
| length は Function インスタンスのプロパティで、関数が期待する引数の数を示します。 | 1 | 12 | 1 | 1 | 18 | 1 |
Function.length.configurable true 設定可能: true | 43 | 12 | 37 | 10 | 43 | 10 |
| name は Function オブジェクトの読み取り専用プロパティで、作成時に付けられた関数の名前、もしくは無名関数の場合は anonymous または '' (空文字列)を返します。 | 15 | 14 | 1 | 6 | 18 | 6 |
Function.name.configurable true 設定可能: true | 43 | 14 | 38 | 10 | 43 | 10 |
Function.name.inferred names 無名関数の推論名 | 51 | 79 | 53 | 10 | 51 | 10 |
| toString() は Function インスタンスのメソッドで、関数のソースコードを表す文字列を返します。 | 1 | 12 | 1 | 1 | 18 | 1 |
Function.toString.toString revision Function.prototype.toString`リビジョンを実装する。 | 66 | 79 | 54 | 17 | 66 | 17 |
| その他 | ||||||
| 一般的に言うと、関数とは外部 (再帰の場合は内部) から呼び出すことのできる「サブプログラム」です。プログラムそのもののように、関数は関数本体 (function body) と呼ばれる連続した文で構成されます。関数には引数として値を渡すことができ、関数は値を返すことができます。 | 1 | 12 | 1 | 1 | 18 | 1 |
| arguments は配列風 (array-like) オブジェクトであり、関数に渡された引数の値を含んでおり、関数内からアクセスすることができます。 | 1 | 12 | 1 | 1 | 18 | 1 |
| [Symbol.iterator]() は Functions/arguments オブジェクトのメソッドで、イテレータープロトコルを実装し、 arguments オブジェクトが反覆可能を期待するほとんどの構文(スプレッド構文や Statements/for...of ループなど)で利用できるようにするためのものです。これは、 arguments オブジェクトのそれぞれのインデックスの値を返す 配列イテレーターオブジェクト を返します。 | 52 | 12 | 46 | 9 | 52 | 9 |
| arguments.length データプロパティは、関数に渡された引数の数が入ります。 | 1 | 12 | 1 | 1 | 18 | 1 |
| アロー関数式は、従来の関数式の簡潔な代替構文ですが、意味的な違いや意図的な使用上の制限もあります。 | 45 | 12 | 22 | 10 | 45 | 10 |
javascript.functions.arrow_functions.trailing_comma パラメータの末尾のカンマ | 58 | 12 | 52 | 10 | 58 | 10 |
javascript.functions.block_level_functions ブロックレベルの機能 | 49 | 12 | 46 | 10 | 49 | 10 |
| 関数のデフォルト引数は、値が渡されなかった場合や undefined が渡された場合に、名前付き引数を既定値で初期化するためのものです。 | 49 | 14 | 15 | 10 | 49 | 10 |
javascript.functions.default_parameters.destructured_parameter_with_default_value_assignment デフォルト値が割り当てられた構造化されていないパラメータ | 49 | 14 | 41 | 10 | 49 | 10 |
javascript.functions.default_parameters.parameters_without_defaults_after_default_parameters デフォルト・パラメータの後にデフォルトのないパラメータ | 49 | 14 | 26 | 10 | 49 | 10 |
| get 構文は、オブジェクトのプロパティを関数に結びつけ、プロパティが参照された時に関数が呼び出されるようにします。これはクラスでも使用できます。 | 1 | 12 | 1.5 | 3 | 18 | 1 |
javascript.functions.get.computed_property_names 計算されたプロパティ名 | 46 | 12 | 34 | 9.1 | 46 | 9.3 |
| メソッド定義は、オブジェクト初期化子内で関数プロパティを定義するための簡略化された構文です。また、クラス内でも使用できます。 | 39 | 12 | 34 | 9 | 39 | 9 |
javascript.functions.method_definitions.async_methods 非同期メソッド | 55 | 15 | 52 | 10.1 | 55 | 10.3 |
javascript.functions.method_definitions.generator_methods_not_constructable ジェネレータメソッドはコンストラクタブルではない(ES2016) | 42 | 13 | 43 | 9.1 | 42 | 9.3 |
| 残余引数構文により、関数が不定数の引数を配列として受け入れることができ、可変長引数関数を JavaScript で表すことができます。 | 47 | 12 | 15 | 10 | 47 | 10 |
javascript.functions.rest_parameters.destructuring 休養パラメータの再構築 | 49 | 79 | 52 | 10 | 49 | 10 |
| set 構文は、あるオブジェクトプロパティを、プロパティに設定しようとしたときに呼び出される関数に結びつけます。これはクラスでも使用できます。 | 1 | 12 | 1.5 | 3 | 18 | 1 |
javascript.functions.set.computed_property_names 計算されたプロパティ名 | 46 | 12 | 34 | 9.1 | 46 | 9.3 |
| 文法 | ||||||
trailing commas in functions 関数パラメータの末尾のカンマ | 58 | 14 | 52 | 10 | 58 | 10 |
| その他 | ||||||
| function キーワードは、式の中で関数を定義するために使用されます。 | 1 | 12 | 1 | 1 | 18 | 1 |
| 演算子 | ||||||
trailing comma パラメータの末尾のカンマ | 58 | 14 | 52 | 10 | 58 | 10 |
| その他 | ||||||
| function 宣言は、新しい関数と指定された名前のbindingを作成します。 | 1 | 12 | 1 | 1 | 18 | 1 |
| ステートメント | ||||||
trailing comma in parameters パラメータの末尾のカンマ | 58 | 14 | 52 | 10 | 58 | 10 |
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (79)
- ディクショナリで定義された関数の名前は適切に割り当てられますが、var/let 変数の代入で定義された無名関数の名前は空白になります。
- Firefoxの初期実装では、矢印関数は自動的に厳密化されました。これは Firefox 24 で変更されました。use strict';` の使用が必須になりました。
- Firefox 39 より前のバージョンでは、矢印関数の引数の後に行終端文字 (`n`) を指定することが不正確に許されていました。これは ES2015 仕様に準拠するように修正され、これ以降のバージョンでは `() ˶=> {}` のようなコードは `SyntaxError` をスローするようになりました。
基本構文
// Default arguments
function greet(name = 'Guest') {
return `Hello, ${name}!`;
}
// Rest arguments
function sum(...nums) {
return nums.reduce((a, b) => a + b, 0);
}
sum(1, 2, 3, 4); // 10 ライブデモ
defaultargument. Usage
Argument that specified case to defaultvalue that apply variantchild simulated.
aggregate with restargument.
not-specific. number. Argument and processingrestargument. behavior inspect it..
callbackfunction. asyncrun
Function argument and, specific. Processing that Doneafter to Runmechanism simulated.
実務での使いどころ
-
Functions の活用
関数の基本機能。宣言、式、デフォルト引数、レスト引数などを提供。
注意点
- 特になし。すべての主要ブラウザで安定して動作する。
アクセシビリティ
- JavaScript による動的更新時は、aria-live リージョンで変更をスクリーンリーダーに通知する。
参考リンク
Powered by web-features