2024-01-05

JavaScript でさあ

変数 value が null でも undefined でもない事を確認するのに

   if (value) {
      console.log('null でも undefined でもねーわ');
   }

これほんとやめろって。

おかげで value に 0 とかが入ってる時に、このコンディションが false になるわけだ。

色んな会社さんのコード見てきたけど、このタイプバグ本当に多い。

今まさに、まーたこバグを見つけて増田を書いてるわけで。

昨年は、世界的にも有名な会社さんのフレームワークがこれでバグってた。

ももう既にシステムの一部は本番稼働しててフレームワークはいじれない。

仕方ないので value には一旦文字列の '0' を渡しておいて if (value) {~} の中の重要ロジックを動かして

(めっちゃ幸運な事に、数値 0 のかわりに文字列 '0' でも正しく動くような、型について緩いロジックだったから)

その後で改めて value に数値 0 を入れなおすという、きったないハックで誤魔化した事もある。

自分お客様だったら怒るね。「いやいや、全部理想的コードにしてちょうだいよ。お金払ってんだよ?」って。

もし建築世界でこんな誤魔化しが起こってたら、人の命が消えちゃうよ。。。

  • 建築の世界では豆腐を建材にしない。

  • 😷ワイもJavaScript始めた時にこのバグやらかしたやで

  • JavaScriptが悪いんやぞ。 Wasm中心のエコシステムが普及するまで適当にお茶を濁すしか無い。

  • このコードにはいくつかの問題点があります: 1. **条件式の曖昧さ**:JavaScriptでは、`if (value)` は `value` が「truthy」(真と評価される値)である場合にのみ実行されます。しかし、このコ...

  • これどう対処するのが適切なんだろうね。 自分は nullチェックのときだけ厳密等価を使わないで比較している console.assert(null == null, true)console.assert(undefined == null, true)console.assert(0 == null, tru...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん