先日書いたJavaScriptのコードで、クロスブラウザチェックを行ったところ、IE(11)のみで謎のエラーが発生してハマったので原因と解決策をまとめておく。
エラーメッセージ
IEのデベロッパーツールを開くと以下のようなエラーメッセージが吐かれていた。
‘)’ がありません。
閉じ括弧忘れか?と思い、隅々までコードを見直したがそれらしき箇所は見当たらない。
現にChromeやFireFoxなどでは問題なく動いているのだ。
エラーの原因
調べていくうちに分かったことなのだが、関数の引数の指定に問題があったようだ。
function getPath(type, color='') {
// code...
}
上記のような関数を書いていたのだが、引数にデフォルト値を与える書き方がなんとIEではサポートされていないのだ。
JSで引数にデフォルト値を与える代替策
今回は代替策として以下のように関数を書き換えた。
function getPath(type, color) {
if(typeof color === 'undefined') color = '';
// code...
}
これでIEでも問題なく動くようになった。