こんにちは、コーテッグのこやまです。
今持っている案件で、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案件は避けれたら避けたほうがいいなと感じました。