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

【JavaScript ECMAScript】SyntaxError: unparenthesized unary expression can't appear on the left-hand side of '**'エラーの使い方

SyntaxError: unparenthesized unary expression can't appear on the left-hand side of '**'エラーの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

SyntaxError: unparenthesized unary expression can't appear on the left-hand side of '**'クラスは、JavaScriptにおいて、特定の構文規則の違反を知らせるエラーメッセージです。このエラーは、単項演算子(例えば、数値の符号を反転させる - や論理否定の ! など)がカッコで囲まれていない状態で、累乗演算子 ** の左側に配置された場合に発生します。JavaScriptの言語仕様では、累乗演算子 ** の左オペランドとして、カッコで括られていない単項演算子を含む式を直接記述することを許可していません。

具体的には、もし変数を負の値にしてから累乗したい場合に '-a**2' のように記述すると、このエラーが発生します。JavaScriptの演算子優先順位のルールでは、累乗演算子 ** は単項演算子よりも高い優先順位を持つため、まず a**2 の部分が計算され、その結果に対して単項演算子 - が適用されると解釈されます。しかし、累乗演算子 ** の左側には、直接数値や変数といった「値」が来ることを想定しており、カッコなしの単項演算子式は文法的に許容されていません。

この構文エラーを解消し、意図したとおりに処理を進めるためには、単項演算子を含む式を必ずカッコ () で囲む必要があります。例えば、-a の結果を二乗したい場合は (-a)**2 と記述します。このように記述することで、演算の優先順位が明確になり、プログラムは正しい構文として認識され、期待どおりに動作するようになります。

構文(syntax)

1-2 ** 3;

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ

関連プログラミング言語