6

MDNによると、単項プラス演算子を使用する場合:

10進数と16進数( "0x"で始まる)形式の整数がサポートされています。負の数がサポートされています(ただし、hexはサポートされていません)。特定の値を解析できない場合は、NaNと評価されます。

しかし、このJasmineテストを実行すると(toBe()マッチャーは===演算子を適用します):

   it("should return NaN when trying to convert a string representing a NEGATIVE HEX to the corresponding number", function() {
    var a = '-0xFF';        
    expect(typeof +a).toBe('number');
    expect(isNaN(+a)).toBeTruthy(); //Fails on Chrome and Opera...
  });

ChromeとOperaでは失敗します(IE、Safari、Firefoxでは合格します)。

ChromeとOperaのエンジンに欠陥がありますか、それとも何かが足りませんか?

4

2 に答える 2

2

仕様への取り付け方によっては、欠陥と見なされる場合と見なされない場合があります。)。

この振る舞いに関して興味深い議論を見つけました。Firefoxはかつて「仕様よりも優れた」キャンプにあったようですが、その後は仕様に従って修正しました。

于 2012-04-27T09:58:17.077 に答える
1

EcmaScriptの仕様によれば、単項+演算子は、値(ここでは文字列)に[String-] to-Number-conversionを適用します。これは、16進数を受け入れますが、負の16進数は受け入れません。

于 2012-04-27T10:04:08.880 に答える