昨天理解完抽象操作後是不是覺得規範好讀許多了呢?今天也來看看這些操作裡面有哪些看似特別但之前被無視的內容吧!
一樣看看例子中有什麼特別的:
他用𝔽()包住了π
,那這個𝔽()是啥??點進去看看吧!
一句一句嘗試著理解看看吧...
Conversions between mathematical values and Numbers or BigInts are always explicit in this document.
--ECMAScript
「數學值與 ECMAScript 中的Number
或BigInts
之間的轉換在這個文件中有明確定義。」
喔?看起來 𝔽(x) 應該跟不同形態之間的轉換有關,再接下去看看。
A conversion from a mathematical value or extended mathematical value x to a Number is denoted as "the Number value for x" or 𝔽(x).
--ECMAScript
「一個數學值或是擴展的數學值『x
』轉換為 ECMAScript 的 Number
會被記為『x
的Number
值』或是 𝔽(x)。」
出現啦!!原來 𝔽() 的功用就是將我們平常認知的數學值轉換成 ECMAScript 的Number
~
繼續往下看。
A conversion from an integer x to a BigInt is denoted as "the BigInt value for x" or ℤ(x).
--ECMAScript
「一個整數『x
』轉換成一個BigInt
會被記為『x
的BigInt
』或是 ℤ(x)。」
ECMAScript 中的Number
如果是一個非常大的數時,在處理上會有精度的問題,所以 ECMAScript 有另一個資料型態BigIng
來處理任意精度的整數,就可以避免Number
的精度限制導致的問題。
A conversion from a Number or BigInt x to a mathematical value is denoted as "the mathematical value of x", or ℝ(x).
--ECMAScript
「一個 ECMAScript 的Number
或BigInt
『x
』轉換成數學值會被記為『x
的數學值』或是 ℝ(x)。」
喔?前面有 𝔽(x) 用來把數學值轉換成 ECMAScript 的值,現在講到的 ℝ(x) 是將 ECMAScript 中的值轉換成數學值,某種程度上感覺就像 𝔽(x) 的反向操作呢!
The mathematical value of +0𝔽 and -0𝔽 is the mathematical value 0.
--ECMAScript
「ECMAScript 中的+0𝔽
跟-0𝔽
轉成數學值就是數學中的0
。」
喔!應該是說 ECMAScript 中有+0
跟-0
兩種型態,但在數學值的世界都是0
。
這句看了大概有 10 分鐘,可能是累了QQ
The mathematical value of non-finite values is not defined.
--ECMAScript
「非有限值在數學值中未定義。」
在 ECMAScript 的世界中非有限值是指Infinity
、-Infinity
跟NaN
,這些值在數學中是沒有具體定義的。
The extended mathematical value of x is the mathematical value of x for finite values, and is +∞ and -∞ for +∞𝔽 and -∞𝔽 respectively; it is not defined for NaN.
--ECMAScript
「當x
有限時,x
的擴展數學值就是x
在數學中的值;ECMAScript 中+∞𝔽
跟-∞𝔽
的數學值分別就是+∞
跟-∞
;而ECMAScript中NaN
的數學值則沒有定義。」
真的講得非常清楚呢!
「數學不會背叛你,數學不會就是不會。」
看來 ECMAScript 中的數值跟真實世界的數學值之間存在著某種差別呢!所以 ECMAScript 明確定義了他自己的數值跟真實數學值之間切換時要如何處理,而 𝔽(x)、ℤ(x)、ℝ(x)等這些則是表示將裡面的值在現實與 ECMAScript 的世界之間做不同意義的切換。了解這些操作之後相信在閱讀規範時就不會對這些奇怪的小東西感到陌生了吧!
參考資料: