7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IE君はつらい

Last updated at Posted at 2019-01-16

受託やったりSESやったりしてる小さな企業で働いてます。
最近フロントエンドの仕事もやるようになって、Vue.jsをやるようになりました。JavaScript、つらい。苦手です。

なかでもIE対応はつらいです。ですが覚えてしまえば回避できます。
いっぱいコードを書いたあとで、どうして動かないんだといちいちコメントつけてデバッグするととてもつらい思いをすることになるので、その予防策としていくつか共有いたします。

デフォルト引数について

function characterRoll(hasQBee = null){
  if (hasQBee){
    return new MahoShojo();
  }
}

デフォルト引数は使えないので、こんな感じで書かないといけません

function characterRoll(hasQBee){
  if (hasQBee === void 0) hasQBee = null;
  if (hasQBee){
    return new MahoShojo();
  }
}

アロー関数で死ぬ


function getMahoShojoById(id){
  const mahoShojos = [
    {id:'1', name:'まどか'},
    {id:'2', name:'ほむら'},
    {id:'3', name:'さやか'}
  ];
  const mahoShojo = mahoShojos.filter(shojo => shojo.id === 1);
  return mahoShojo;
}

アロー関数式は当たり前ですが使えません。
以下のように書きましょう。

function getMahoShojoById(id){
  const mahoShojos = [
    {id:'1', name:'まどか'},
    {id:'2', name:'ほむら'},
    {id:'3', name:'さやか'}
  ];
  const mahoShojo = arr.filter(function(shojo ){
    return (shojo.id === 1);
  });
  return mahoShojo;
}

式展開でも死ぬ

function alertMahoShojos(){
  const mahoShojos = ['まどか','ほむら','さやか'];
  var msg = mahoShojos.join(',');
  alert(`${msg}は魔法少女`);
}

素直に文字列結合しましょう

function alertMahoShojos(){
  const mahoShojos = ['まどか','ほむら','さやか'];
  var msg = mahoShojos.join(',');
  alert(msg + 'は魔法少女');
}

Babelを導入しましょう、さもなくばコード書いた後でつらい思いをしないように、IE11にも対応している書き方を心がけましょう。Chromeを使って開発するだけじゃなくて、IEもちゃんと動くか確かめること(いわゆるクロスブラウザチェック)を習慣づけたほうがいいのかもしれません。自戒をこめて。

7
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?