後輩のコードを見ていて発見した Internet Explorer 固有のバグです。
今回遭遇するまで、こんな現象が起きることを知らなかったので、備忘録も兼ねています。
で、コードはこちら。
function checkStr( message = "" ){ if( message != "" ){ // 処理 } }
一見何の問題もなさそうですし、Google Chrome や Microsoft Edge では問題なく動作しました。
が、どうしてもIEではダメで、「‘)’がありません」というエラーが表示されました。
で、対処法ですが、そもそもの原因は関数の引数にデフォルト値を指定したことが原因のようでした。
IEではJavaScriptの関数での引数のデフォルト値の設定には対応していないようですね。
そのため、引数の「message = “”」を 単に「message」に修正すれば問題なく動作しました。
修正後のコードは下記のとおりです。
function checkStr( message ){ if( message != "" ){ // 処理 } }
1行目の関数の引数のデフォルト値を指定しないように修正しました。
以上、IEでの関数エラーの対処法でした。
最初はエラー文を鵜呑みにしてカッコの数があっているかを確認していましたが、原因は全く違いましたね。
たまにこういった見当はずれのエラー文があったりするので、デバッグ作業は難しいです。
今回は思い付きで関数の引数を消してみたら解決したので良かったですね。
同じことでお悩みの方は、是非参考にしてください。