1

この議論trueは興味深いものでしたが、私は本当に戻りたい、またはfalseオブジェクトの存在について知りたいだけなので、本当にうまくいくものを見つけることができませんでした. また、私は冗長なコードが本当に嫌いで、最小限の手間で物事を書くためのシンプルで簡単な方法を探しています.

たとえば、次のように定義されているはずですBigobject.optionが、まだ存在しない可能性があります。

だから私はこれを思いついた:

(!Bigobject.option == false)が存在しない場合、および「何もない」または空の文字列、オブジェクト、または配列を含む何かに設定されている場合false、これは返されます。optiontrue

私が理解したいこと:

これは奇妙な方法ですか?「合法」ですか?これは一貫して機能しますか?私はそれを別の方法で行うべきですか?助けてくれてありがとう。

4

1 に答える 1

1

私にとっては、機能のすぐ後の読みやすさです。

(!Bigobject.option == false)取り組んでいないものを読むのは混乱します。あなたのコードを見たことがない人として、あなたのコードを読むようにしてください。(!Bigobject.option == false)すぐに返ってくるものを予測できますか?

(Bigobject.option === null)あなたは(おそらく)新しい読者として何を知っているので、リンクされた質問で選択された回答に同意します。

あなたが求めていることをするために:変数の存在のブール値を返します。文字列になることが(typeof(Bigobject.option) === "undefined")可能でない限り、私は使用しますBigobject.option"undefined"

編集:あなたの質問に本当に答えていないことに気づきました...

これは奇妙な方法ですか?「合法」ですか?

  • IMOは奇妙ですが、合法であると確信しています。jslint は「==」について警告します。

これは一貫して機能しますか?

  • Bigobject.option = false の場合、false が返されます。

私はそれを別の方法で行うべきですか?

  • そうすることをお勧めします。
于 2012-04-18T18:51:51.567 に答える