Tôi vừa phát hiện ra tính năng ECMAScript 7 a**b
như một sự thay thế cho Math.pow(a,b)
( Tài liệu tham khảo MDN ) và xem một cuộc thảo luận trong bài đăng đó , trong đó chúng dường như hoạt động khác nhau. Tôi đã thử nghiệm nó trong Chrome 55 và có thể xác nhận rằng kết quả khác nhau.
Math.pow(99,99)
trả lại 3.697296376497263e+197
trong khi
99**99
trả lại 3.697296376497268e+197
Vì vậy, ghi lại sự khác biệt Math.pow(99,99) - 99**99
dẫn đến -5.311379928167671e+182
.
Cho đến nay, có thể nói, đó chỉ đơn giản là một triển khai khác, nhưng gói nó trong một hàm lại hoạt động khác:
function diff(x) {
return Math.pow(x,x) - x**x;
}
gọi diff(99)
trả lại 0
.
Tại sao điều đó lại xảy ra?
Như xszaboj đã chỉ ra, điều này có thể được thu hẹp lại thành vấn đề này:
var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182
`likethis`
để làm cho nó có thể đọc được và cũng tránh đậm / nghiêng vấn đề