先日書いたJavaScriptのコードで、クロスブラウザチェックを行ったところ、IE(11)のみで謎のエラーが発生してハマったので原因と解決策をまとめておく。

エラーメッセージ

IEのデベロッパーツールを開くと以下のようなエラーメッセージが吐かれていた。

‘)’ がありません。

閉じ括弧忘れか?と思い、隅々までコードを見直したがそれらしき箇所は見当たらない。
現にChromeやFireFoxなどでは問題なく動いているのだ。

エラーの原因

調べていくうちに分かったことなのだが、関数の引数の指定に問題があったようだ。

function getPath(type, color='') {
  // code...
}

上記のような関数を書いていたのだが、引数にデフォルト値を与える書き方がなんとIEではサポートされていないのだ。

JSで引数にデフォルト値を与える代替策

今回は代替策として以下のように関数を書き換えた。

function getPath(type, color) {
  if(typeof color === 'undefined') color = '';

  // code...
}

これでIEでも問題なく動くようになった。