Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】SyntaxError: await/yield expression can't be used in parameterエラーの使い方

SyntaxError: await/yield expression can't be used in parameterエラーの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

SyntaxError: await/yield expression can't be used in parameterオブジェクトは、JavaScriptコードの構文が正しくないことを示すエラーオブジェクトです。このエラーは、関数やメソッドの仮引数(パラメータ)の定義部分で、非同期処理の完了を待つためのawait式、またはジェネレーター関数で処理を一時停止し値を返すためのyield式を使用しようとした場合に発生します。

JavaScriptにおいて、関数の仮引数は関数が呼び出される際に同期的に評価され、その値が決定されます。しかし、await式はPromiseベースの非同期処理が完了するまで関数の実行を一時停止し、その結果を待機する動作をします。同様に、yield式はジェネレーター関数内で関数の実行を中断し、呼び出し元に値を返し、必要に応じて処理を再開させる特殊な動作を持ちます。これらの非同期または中断を伴う動作は、同期的な評価が期待される仮引数のコンテキストとは相容れません。

このため、JavaScriptの言語仕様では、コードの複雑性を避け、実行時の予測可能性を保つ目的で、仮引数の定義内でのawaityieldの使用を構文的に禁止しています。このエラーに遭遇した場合は、仮引数内でawaityieldを使用している箇所がないか確認し、それらの処理を関数の本体内部に移動させる必要があります。たとえば、引数のデフォルト値として非同期処理の結果を利用したい場合は、関数本体内で引数の有無をチェックし、引数が渡されなかった場合にawaitを使って必要な値を設定する、といった方法で問題を解決できます。これにより、コードの構文が修正され、期待通りに動作するようになります。

構文(syntax)

1async function example(param = await Promise.resolve(1)) {
2  // この構文は 'SyntaxError: await/yield expression can't be used in parameter' を引き起こします。
3  // パラメータのデフォルト値内で await や yield 式を使用することはできません。
4}

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ

関連プログラミング言語