繁体   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