[英]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.