簡體   English   中英

JS一元加運算符的行為應用於表示負十六進制的字符串

[英]Behavior of JS unary plus operator applied on a string representing a negative hex

根據MDN ,當使用一元加運算符時:

支持十進制和十六進制(“0x” - 前綴)格式的整數。 支持負數( 但不支持十六進制 )。 如果它無法解析特定值,它將評估為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引擎的缺陷還是我錯過了什么?

它可能 - 或可能不被視為缺陷,取決於一個人如何附加規格。

我發現了一個關於這種行為的有趣討論 看起來Firefox曾在“優於規格”的陣營中出現過一次,但隨后根據規格對其進行了修復。

根據EcmaScript規范 ,一元+運算符對值(此處為字符串)應用[String-]到數字轉換 ,該值接受十六進制數字 - 但不接受負十六進制數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM