JavaScript全局對象

JavaScript中Global對象的詳細信息

JavaScript提供了一個全局對象它具有一組全局訪問的屬性,函數和對象,沒有名稱空間。

這些屬性是:

  • Infinity
  • NaN
  • undefined

這些功能是:

  • decodeURI()
  • decodeURIComponent()
  • encodeURI()
  • encodeURIComponent()
  • eval()
  • isFinite()
  • isNaN()
  • parseFloat()
  • parseInt()

這些是對象:

和錯誤:

  • Error
  • EvalError
  • RangeError
  • ReferenceError
  • SyntaxError
  • TypeError
  • URIError

我在此描述錯誤JavaScript錯誤參考郵政。

現在讓我們在這裡描述全局屬性和功能。

Infinity

InfinityJavaScript中的一個值表示無限

正無窮大。要獲得負無窮大,請使用操作員:-Infinity

這些相當於Number.POSITIVE_INFINITYNumber.NEGATIVE_INFINITY

將任何數字加到Infinity或相乘Infinity對於任何數字,仍然給出Infinity

NaN

全球NaN值是的首字母縮寫Not a Number。它由諸如零除以零,無效的parseInt()操作或其他操作之類的操作返回。

parseInt()    //NaN
parseInt('a') //NaN
0/0           //NaN

特別要考慮的是NaN價值永遠不等於另一個NaN價值。您必須使用isNaN()全局函數,用於檢查值是否等於NaN

NaN === NaN //false
0/0 === NaN //false
isNaN(0/0)  //true

undefined

全球undefined屬性保存原始值undefined

運行未指定返回值的函數將返回undefined

const test = () => {}
test() //undefined

不像NaN,我們可以比較undefined價值與undefined,並實現為:

undefined === undefined

通常使用typeof運算符,以確定變量是否未定義:

if (typeof dog === 'undefined') {

}

decodeURI()

執行相反的操作encodeURI()

decodeURIComponent()

執行相反的操作encodeURIComponent()

encodeURI()

此功能用於編碼完整的URL。它確實將所有字符編碼為它們的HTML實體,但在URI結構中具有特殊含義的字符除外,包括所有字符和數字,以及那些特殊字符:

[email protected]#{{content}}amp;*()=:/,;?+-_.

例子:

encodeURI("http://flaviocopes.com/ hey!/")
//"http://flaviocopes.com/%20hey!/"

encodeURIComponent()

如同encodeURI()encodeURIComponent()意味著有不同的工作。

它不是用來編碼整個URI,而是編碼一部分URI。

它確實將所有字符編碼為它們的HTML實體,但在URI結構中具有特殊含義的字符除外,包括所有字符和數字,以及那些特殊字符:

-_.!~*'()

例子:

encodeURIComponent("http://www.example.org/a file with spaces.html")
// "http%3A%2F%2Fwww.example.org%2Fa%20file%20with%20spaces.html"

eval()

這是一個特殊函數,它接受包含JavaScript代碼的字符串,並對其進行評估/運行。

此功能很少使用,原因如下:它可能很危險。

我建議閱讀本文就此主題而言。

isFinite()

如果作為參數傳遞的值是有限的,則返回true。

isFinite(1)                        //true
isFinite(Number.POSITIVE_INFINITY) //false
isFinite(Infinity)                 //false

isNaN()

如果作為參數傳遞的值的計算結果為true,則返回trueNaN

isNaN(NaN)        //true
isNaN(Number.NaN) //true
isNaN('x')        //true
isNaN(2)          //false
isNaN(undefined)  //true

此功能非常有用,因為NaN價值永遠不等於另一個NaN價值。您必須使用isNaN()全局函數,用於檢查值是否等於NaN

0/0 === NaN //false
isNaN(0/0)  //true

parseFloat()

喜歡parseInt()parseFloat()用於將字符串值轉換為數字,但保留小數部分:

parseFloat('10,000', 10) //10     ❌
parseFloat('10.00', 10)  //10     ✅ (considered decimals, cut)
parseFloat('10.000', 10) //10     ✅ (considered decimals, cut)
parseFloat('10.20', 10)  //10.2   ✅ (considered decimals)
parseFloat('10.81', 10)  //10.81  ✅ (considered decimals)
parseFloat('10000', 10)  //10000  ✅

parseInt()

此函數用於將字符串值轉換為數字。

整數的另一個好的解決方案是調用parseInt()功能:

const count = parseInt('1234', 10) //1234

不要忘記第二個參數,即基數,十進制數字始終為10,否則轉換可能會嘗試猜測基數並給出意外結果。

parseInt()嘗試從不僅包含數字的字符串中獲取數字:

parseInt('10 lions', 10) //10

但是如果字符串不是以數字開頭,您將得到NaN(不是數字):

parseInt("I'm 10", 10) //NaN

另外,就像Number一樣,數字之間使用分隔符也不可靠:

parseInt('10,000', 10) //10     ❌
parseInt('10.00', 10)  //10     ✅ (considered decimals, cut)
parseInt('10.000', 10) //10     ✅ (considered decimals, cut)
parseInt('10.20', 10)  //10     ✅ (considered decimals, cut)
parseInt('10.81', 10)  //10     ✅ (considered decimals, cut)
parseInt('10000', 10)  //10000  ✅

免費下載我的JavaScript初學者手冊


更多js教程: