2012-08-02 52 views
15

thể trùng lặp:
Workarounds for JavaScript parseInt octal bugtại sao parseInt ('08 ') là cho 0, trong khi parseInt ('07') được đưa ra 7

tôi đang làm việc trên javascript, và tôi dường như tìm thấy điều này lạ, rằng các chức năng javascript parseInt ('08 ') là trở về 0 và parseInt ('07') là trở về 7.

hành vi này dường như có trong Firefox.

parseInt ('08 ') đang trả về 8 trong IE, nhưng 0 trong Firefox ..

Tại sao? Tôi muốn parseInt ('08 ') để trở về 8, như mong đợi và nhận được trong IE.

Trả lời

32

Vâng, tôi đã xem qua điều này trước đây. Nó thực sự là kỳ lạ bởi vì một số trình duyệt giải thích điều này như bạn muốn phân tích nó trong cơ sở 8. Hãy xem xét các bài viết sau:

http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256C85006A6604

về cơ bản, bạn phải nói với các phân tích cú pháp để sử dụng cơ sở 10 số:

parseInt('08', '10'); 
+3

'parseInt ('08 ',' 10 ');'? Có thật không? Thông thường chúng ta sẽ chỉ làm '+" 08 "', vì việc thêm '+' trước một String sẽ biến nó thành Số mà không có bất kỳ vấn đề gì. –

+1

hacks sẽ hoạt động quá – AceCorban

+0

@Derik Post hoc ergo propter hoc – lededje

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