20251222_JavaScriptの演算子には優先順位がある
AtCoderを解いてる時に、以下のように想定外の結果を得た。
jsx
// 想定:コンソールにhogeが出力される
// 実際の結果:出力されない
const s = "abc";
if(!s==="efg"){
console.log("hoge");
}原因は、if文の条件が (!s)==="efg" と扱われてしまったためであり、これはJavaScriptの演算子の優先順位の観点で、 ===より !の方が優先順位が高いことが理由だった。sと”efg”の比較結果を否定したい場合は、 !(s===”efg”)と記述すれば良い。 ()は !より優先順位が上なので、sと”efg”の比較が先に行われる。