JavaScript 全域物件
JavaScript 提供一個全域物件,它包含一組全域使用的屬性、函式和物件,無需使用命名空間。
這些屬性包括:
Infinity
NaN
undefined
這些函式包括:
decodeURI()
decodeURIComponent()
encodeURI()
encodeURIComponent()
eval()
isFinite()
isNaN()
parseFloat()
parseInt()
以下為這些物件:
以及以下錯誤類型:
Error
EvalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError
我在JavaScript 錯誤參考文章中描述了這些錯誤。
現在我們來介紹一下全域屬性和函式。
Infinity
Infinity
在 JavaScript 中代表無窮大。
要獲得負無窮大,可使用-
運算子:-Infinity
。
這些值等同於 Number.POSITIVE_INFINITY
和 Number.NEGATIVE_INFINITY
。
將任何數字加上 Infinity
,或將 Infinity
乘以任何數字,結果仍為 Infinity
。
NaN
全域的 NaN
值代表非數字。它通常由零除以零、無效的 parseInt()
執行或其他運算返回。
1 | parseInt() //NaN |
特別注意的是,NaN
值永遠不等於任何其他 NaN
值。必須使用 isNaN()
全域函式來檢查值是否為 NaN
。
1 | NaN === NaN //false |
undefined
全域的 undefined
屬性含有原始值 undefined
。
執行未指定返回值的函式時,返回值為 undefined
。
1 | const test = () => {} |
與 NaN
不同,可以將 undefined
值與 undefined
值進行比較,並得到 true
。
1 | undefined === undefined |
通常使用 typeof
運算子來確定變數是否為 undefined
。
1 | if (typeof dog === 'undefined') { |
decodeURI()
執行與 encodeURI()
相反的操作。
decodeURIComponent()
執行與 encodeURIComponent()
相反的操作。
encodeURI()
此函式用於編碼完整 URL,將所有字符除了 URI 結構中具有特殊意義的字符轉換為其 HTML 實體,包括所有字母和數字,以及以下特殊字符:
~!@#$&*()=:/,;?+-_.
例如:
1 | encodeURI("http://flaviocopes.com/ hey!/") |
encodeURIComponent()
與 encodeURI()
類似,encodeURIComponent()
是用於編碼 URI 的一部分。
它將所有字符除了 URI 結構中具有特殊意義的字符轉換為其 HTML 實體,包括所有字符和數字,以及以下特殊字符:
-_.!~*'()
例如:
1 | encodeURIComponent("http://www.example.org/a file with spaces.html") |
eval()
這是一個特殊的函式,接受包含 JavaScript 代碼的字符串,並對其進行評估/運行。
此函式很少使用,並有一定的風險,因此建議閱讀此文章。
isFinite()
如果傳遞的值是有限的,則返回 true
。
1 | isFinite(1) //true |
isNaN()
如果傳遞的值為 NaN
,則返回 true
。
1 | isNaN(NaN) //true |
此函式非常有用,因為 NaN
值永遠不等於其他任何 NaN
值。必須使用 isNaN()
全域函式來檢查值是否為 NaN
。
1 | 0/0 === NaN //false |
parseFloat()
與 parseInt()
類似,parseFloat()
用於將字符串值轉換為數字,並保留小數部分。
1 | parseFloat('10,000', 10) //10 ❌ |
parseInt()
此函式用於將字符串值轉換為數字。
另一個轉換整數的好方法是調用 parseInt()
函式:
1 | const count = parseInt('1234', 10) //1234 |
不要忘記第二個參數,即基數,對於十進制數,總是使用 10,否則轉換可能會嘗試猜測基數並產生意外結果。
parseInt()
會嘗試從包含非數字的字符串中獲取數字:
1 | parseInt('10 lions', 10) //10 |
但如果字符串不以數字開頭,將返回 NaN
(Not a Number):
1 | parseInt("I'm 10", 10) //NaN |
另外,就像 Number
一樣,在數字之間的分隔符上不可靠:
1 | parseInt('10,000', 10) //10 ❌ |
tags: [“JavaScript”, “Global Object”, “Infinity”, “NaN”, “undefined”, “decodeURI”, “decodeURIComponent”, “encodeURI”, “encodeURIComponent”, “eval”, “isFinite”, “isNaN”, “parseFloat”, “parseInt”]