2012-04-27 19 views
6

according to MDN, khi sử dụng toán tử toán tử cộng:Hành vi của JS hành toán tử cộng chỉ áp dụng trên một chuỗi đại diện cho một hex tiêu cực

Số nguyên trong cả thập phân và thập lục phân ("0x" -prefixed) định dạng được hỗ trợ . Số âm được hỗ trợ (mặc dù không cho số hex). Nếu nó không thể phân tích một giá trị cụ thể, nó sẽ đánh giá thành NaN.

Nhưng khi tôi chạy thử nghiệm Jasmine này (toBe() khớp áp dụng một nhà điều hành ===):

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... 
    }); 

Nó thất bại trên Chrome và Opera (và vượt qua trong IE, Safari và Firefox).

Đó có phải là lỗ hổng trong các công cụ của Chrome và Opera hay tôi thiếu gì đó không?

Trả lời

2

Nó có thể - hoặc có thể không được xem như là một lỗ hổng, tùy thuộc vào cách thức được gắn với thông số kỹ thuật.)

Tôi đã tìm thấy một interesting discussion về hành vi này. Có vẻ như Firefox đã từng ở trong trại 'tốt hơn so với thông số kỹ thuật', nhưng sau đó sửa nó theo spec.

Các vấn đề liên quan