根据 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 引擎的缺陷还是我遗漏了什么?