JavaScript không có bất kỳ loại số nào khác so với điểm nổi chính xác gấp đôi (ngoại trừ trong ECMAScript 6 typed arrays), nhưng triển khai cơ bản có thể chọn lưu trữ các số theo bất kỳ cách nào nó thích miễn là mã JavaScript hoạt động giống nhau .
JavaScript được biên dịch ngày nay, có nghĩa là nó có thể được tối ưu hóa theo nhiều cách không rõ ràng trong ngôn ngữ.
Nếu biến cục bộ trong hàm chỉ nhận giá trị số nguyên và không được tiếp xúc bên ngoài hàm theo bất kỳ cách nào, thì thực tế nó có thể được triển khai bằng kiểu số nguyên khi mã được biên dịch.
Việc triển khai thay đổi trong các trình duyệt khác nhau. Hiện tại có vẻ như tạo nên sự khác biệt lớn trong MS Edge, sự khác biệt lớn trong Firefox và không có sự khác biệt nào trong Chrome: http://jsperf.com/int-vs-double-implementation (Lưu ý: jsperf cho rằng MS Edge là Chrome 42.)
Nghiên cứu sâu hơn:
Các công cụ JS SpiderMonkey (Firefox), V8 (Chrome, Opera), JavaScriptCore (Safari), Chakra (IE) và tê giác (và có thể những người khác, nhưng đó là khó khăn hơn để tìm chi tiết triển khai) sử dụng các cách khác nhau để sử dụng các loại số nguyên hoặc lưu trữ số làm số nguyên khi có thể. Một số trích dẫn:.
"Để có một đại diện hiệu quả các con số và JavaScript đối tượng, V8 đại diện cho cả hai chúng tôi với một giá trị 32 bit Nó sử dụng một chút biết nếu nó là một đối tượng (flag = 1) hoặc một số nguyên (cờ = 0) được gọi là ở đây SMall Integer hoặc SMI vì 31 bit của nó. "
http://thibaultlaurens.github.io/javascript/2013/04/29/how-the-v8-engine-works/
"JavaScript không có một built-in niệm về một giá trị số nguyên, nhưng cho hiệu quả JavaScriptCore sẽ đại diện cho hầu hết các số nguyên như int32 chứ không phải là tăng gấp đôi."
http://trac.webkit.org/wiki/JavaScriptCore
"[...] giá trị phi đôi là một 32-bit loại thẻ và 32-bit tải trọng, đó là bình thường, hoặc một con trỏ hoặc một ký 32-bit số nguyên. "
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Internals
"Trong Windows 10 và Microsoft Edge, chúng tôi đã bắt đầu tối ưu hóa phân tích cú pháp Chakra và trình biên dịch JIT để xác định biến const không tờ khai của các số nguyên được định nghĩa toàn cầu và không bao giờ thay đổi trong suốt thời gian thực hiện chương trình. "
https://blogs.windows.com/msedgedev/2015/05/20/delivering-fast-javascript-performance-in-microsoft-edge/
chỉ tối ưu hóa nếu nó có thể. –
Tại sao bạn quan tâm? –
Tại sao bạn quan tâm tại sao tôi quan tâm? – Vimes