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