つい最近のことですが、Firefoxやchromeでは動くけど、IE11ではjavascriptが動かないということがありました。
開発者ツールのコンソールを確認すると「’)’ がありません。」というエラーメッセージが出力されていました。
意味が分からなかったので、取り合えず上記のメッセージで調べたところ、
IE11ではデフォルト引数が使えないということがわかりました。
今までまったく知らなかった。。。
というわけで、以下の様に書いたらダメらしい。
function hoge(str = "hoge")
{
console.log(str);
}
FirefoxやChromeでは問題ないけど、IE11ではエラーになるので今後は注意しよう。
デフォルト引数は使うことができないですが、以下のように書くことでデフォルト引数の代わりになるようです。
function hoge(str)
{
if(typeof str === 'undefined') str = 'hoge'; // 引数が渡されない場合hogeを入れる
console.log(str);
}
引数を渡さずに呼び出した場合、3行目でstrにhoge
が代入され、その次の行でhoge
が出力される。
hoge() → 「hoge」
hoge(‘fugafuga’) → 「fugafuga」
今更感はありますが良いこと知れた気がします。
今回の内容以外でもIE11では動かないコードがあるらしいので、
もう少し調べてみようと思いました。