javascript-IE11ではデフォルト引数が使えないらしい

つい最近のことですが、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では動かないコードがあるらしいので、

もう少し調べてみようと思いました。