2019年7月24日

IEだけ「’)’ がありません。」と出てしまう時の対処法

またまた出くわしました、IEだけ発生する問題。今回はjavascript編です。きっかけはjQueryのプラグイン導入時。とりあえず動作確認のためにDEMOとして提供されていた記述をそのまま転記してみたところ、ChromeやFirefoxでは動作するのに。IEだけ処理が止まり、コンソールエラーが出て動作しない、という状態にハマってしまいました。

「’)’ がありません。」というエラー

コンソールを見ると「’)’ がありません。」というエラーが出ていました。該当の行を確認するとこのような記述の個所でした。

function hoge(a, b=1, c) {
// 処理を記述
}

エラー対象は関数を定義している行だったのですが、見たところ「’)’ はあるし、構文エラーでも無さそうだし」という感じでした。そのため前後の記述も再確認してみたけど原因わからず、最終的にこの関数を定義している記述だけでもエラーになる事が確認できたので、やはり原因はこの1行ということは確実なのですが、なぜこのエラーが出るのか、しばらくハマってしまいました。

引数でデフォルト値を設定してはいけない

後から考えるとなんでこんな指定を?というDEMOでしたが、引数でデフォルト値を設定する記述となっていて、これがIE流の解釈だとエラーという扱いになっていたようでした。なので、以下のように記述を変更。

function hoge(a, b, c) {
// 処理を記述
}

これにてIEのエラーは無くなりました。bを1にしたければ関数を呼ぶときに引数に設定しておけば良し。DEMOをそのまま流用していたことで気付くのが遅くなりましたが、こんなところでIE独自問題に出くわすとは思いませんでした。
以上、IEだけ「’)’ がありません。」と出てしまう時の対処法でした。

コメントを残す

メールアドレスが公開されることはありません。