技術

[JavaScript]IEのif文の判定がchromeと違う?

投稿日:

こんにちは、コーテッグのこやまです。

今持っている案件で、IE対応を進めているのですが、
css、js共に結構調整が必要な点が出てきました。

工程的にIE対応がはあまり考慮されていないのですが必要なので、
ピンチ気味でもありますが、IE検証用の環境を作って進めています。

それでもこの前、結構ハマってしまうことがありました。
入って欲しいif分に全然入ってくれないというものです。

条件がtrueのはずなのにif文の処理がされない?

isHogeとisFugaという真偽値があるとします。

// isHogeがfalseで、isFugaがtrueのときに

if (!isHoge && isFuga) {
  処理
}

上記の例ではif文内の処理をして欲しいです。
しかし、なぜかうまく行きません。
isHogeとisFugaが本当にfalseとtrueかも確認しました。

()で囲って明示的にして見たらうまくいった。

腑に落ちない感じがしながらも、以下のコードを書いてみたらうまく行きました。

if ((!isHoge) && (isFuga)) {
  処理
}

これでうまく行きました。

当初のコードでは!のかかり方が以下のように解釈されていたのかなーと思ってます。

if (!(isHoge && isFuga)) {
  処理
}

 

こんなこともあるのですね…
出来るだけIE案件は避けれたら避けたほうがいいなと感じました。

-技術
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

[Angular] router-outletの外で現在のurlを取得

こんにちは、コーテッグのこやまです。 Angularでapp.component …

no image

[wordpress]contact form7で作ったformをコード内で呼び出す

こんばんは wordpressでformを作る時はcontact form7を使 …

no image

[Angular]APIから画像を取得して表示する

こんばんは アプリケーションを作っていてフロント側で画像を出すときって ストレー …

no image

auto_incrementの値を確認して変更

こんにちは、コーテッグのこやまです。 railsとmysqlを使っていて、自動で …

[Angular6] Angularのユニットテストでprivate変数を読み込む

Angularでテストコードを書いている時、component側で定義しているp …