2011-09-17 10 views
2

私はxの値は、我々が表現x == nulltrueに評価を持っているものを見つける(すなわち、コードを書くことで)プログラムでへの道を見つけるしたいと思います。決定型変換は、プログラム

+1

理論的に言えば、それは不可能です。 xがとりうる値の範囲は無限です。あなたは言語仕様を見たり、良いプロセスである特定の値だけを見るために排除のプロセスを使わなければなりません。 – Anurag

答えて

3

これは(少なくとも基本的なJavaScriptのルールの事前知識なし)プログラムx == nullが真であるx全て値を決定することができるようにすることは不可能です。

同様の試験をするために行うことができる(この特定のテストケースは、それが真であろうすべての回をカバーし。)

var v = [null, undefined, false, true, -1, 0, 1, "", " ", "0", {}, []] 
for (var i = 0; i < v.length; i++) { 
    var x = v[i] 
    alert(x + " == null? " + (x == null)) 
} 

:ただし、以下のヒューリスティックを誘導することができるパターンを示すべき== falseなど

ハッピーコーディング。


テスト値の他の提案については、レイトアルの答えをご覧ください。 JavaScriptが変換にこれらの変換は、あなたがnullに対して可能なすべての値をテストする必要があります==オペレータの上に適用され、可能な値の数は無制限で道を入力し実行する方法について、少なくとも何かを知らない場合には

2

、あなたが求めるものはできません。

  • 未定義
  • ヌル
  • :あなたは、以下のカテゴリにすべての可能なJavaScriptの表現の世界を打破することができます知識の少しで

  • 負の有限数
  • posit有限数字
  • をアイブ負の無限大
  • 正の無限大
  • NaNの
  • 空の文字列
  • 少なくとも1つの非空白文字
  • 空白文字列の完全な文字列空のオブジェクト
  • いくつかのプロパティを持つオブジェクト

各クラスの代表値をnullに対して試してみてください。

私は、正確には==のセマンティクスを定義するECMA-262仕様の正確なセクションを知っているとの疑問を持ちました。 (セクション11.9.3のthe 5.1 spec