JavaScript基礎-變量和類型

轉自重學前端https://time.geekbang.org/column/article/78884前端

JavaScript規定了幾種語言類型

js規定了7中語言類型分別爲Boolean、Null、Undefined、Number、String、Symbol、Object。bash

undefined 和null

undefined

  1. undefined 表示未定義,只有一個值undefined
  2. 任何變量賦值前都是undefined類型,值爲undefined(而不是null)
  3. undefined是一個變量,而非一個關鍵字
  4. 須要表達這個值,能夠用全局變量undefined,或者void運算

undefined是一個變量,咱們避免無心中被篡改,建議使用void 0來獲取undefined(等價於void (0) )。咱們通常不會把變量賦值爲undefined,這樣能夠保證全部的值爲undefined的變量,都是從未賦值的天然狀態。編碼

null

null 表示的是:定義了但爲空,null也只有一個值就是null。null是js的一個關鍵字,因此任什麼時候候均可以用null關鍵字來換取nullspa

Boolean

布爾類型有兩個值。true和false,他們表示邏輯上的真和假,一樣true和false也是js的關鍵字code

String

String 用於表示文本數據。String 有最大長度是 2^53 - 1,這在通常開發中都是夠用的,可是有趣的是,這個所謂最大長度,並不徹底是你理解中的字符數。 由於 String 的意義並不是「字符串」,而是字符串的 UTF16 編碼,咱們字符串的操做 charAt、charCodeAt、length 等方法針對的都是 UTF16 編碼。因此,字符串的最大長度,其實是受字符串的編碼長度影響的。對象

Note:現行的字符集國際標準,字符是以 Unicode 的方式表示的,每個 Unicode 的碼點表示一個字符,理論上,Unicode 的範圍是無限的。UTF 是 Unicode 的編碼方式,規定了碼點在計算機中的表示方法,常見的有 UTF16 和 UTF8。 Unicode 的碼點一般用 U+??? 來表示,其中 ??? 是十六進制的碼點值。 0-65536(U+0000 - U+FFFF)的碼點被稱爲基本字符區域(BMP)。ip

Number

JavaScript 中的 Number 類型有 18437736874454810627(即 2^64-2^53+3) 個值。開發

JavaScript 中的 Number 類型基本符合 IEEE 754-2008 規定的雙精度浮點數規則,可是 JavaScript 爲了表達幾個額外的語言場景(好比不讓除以 0 出錯,而引入了無窮大的概念),規定了幾個例外狀況:字符串

  • NaN,佔用了 9007199254740990,這本來是符合 IEEE 規則的數字;
  • Infinity,無窮大;
  • -Infinity,負無窮大。

另外,值得注意的是,JavaScript 中有 +0 和 -0,在加法類運算中它們沒有區別,可是除法的場合則須要特別留意區分,「忘記檢測除以 -0,而獲得負無窮大」的狀況常常會致使錯誤,而區分 +0 和 -0 的方式,正是檢測 1/x 是 Infinity 仍是 -Infinity。it

一樣根據浮點數的定義,非整數的 Number 類型沒法用 ==(=== 也不行) 來比較,一段著名的代碼,這也正是咱們第三題的問題,爲何在 JavaScript 中,0.1+0.2 不能 =0.3:

console.log( Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON);
複製代碼

Symbol

Symbol 是 ES6 中引入的新類型,它是一切非字符串的對象 key 的集合,在 ES6 規範中,整個對象系統被用 Symbol 重塑。

Object

Object 是 JavaScript 中最複雜的類型,也是 JavaScript 的核心機制之一。Object 表示對象的意思,它是一切有形和無形物體的總稱。

在js中,對象的定義是'屬性的集合',屬性分爲數據屬性和訪問屬性,兩者均爲key-value結構,key能夠是字符串或者symboy類型。

相關文章
相關標籤/搜索