JS中數(shù)據(jù)類型的基礎(chǔ)知識,適合初學(xué)者
數(shù)據(jù)類型是對數(shù)據(jù)的分類,它決定了該數(shù)據(jù)的可能值,以及您可以對它執(zhí)行的操作。 JavaScript 有八種基本數(shù)據(jù)類型。
字符串是一組多個字符中的一個,可以包括數(shù)字、字母或符號。 字符串由引號(雙引號或單引號)和反引號表示:
let string1 = ‘Hello, I am a string’let string2 = “I’m also a string”let string3 = `I, too am a string`
使用單引號或雙引號在很大程度上是一個偏好問題,但當(dāng)字符串需要使用變量或表達(dá)式時,需要使用反引號:
let string1 = ‘Hello, I am a string’let stringtroduction = `${string1}, and my name is string1`console.log(stringtroduction)// output: Hello, I am a string, and my name is string1
JavaScript 中的字符串是不可變的:它們一旦創(chuàng)建就無法更改(JavaScript 數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu) — JavaScript | MDN,2022)。 看起來改變字符串的操作實(shí)際上將變量指向一個新創(chuàng)建的值。
數(shù)字
數(shù)字用于表示整數(shù)、小數(shù)和指數(shù)。 在大多數(shù)情況下,它們類似于我們在日常生活中理解數(shù)字的方式。 很容易將數(shù)字 ‘3’ 的字符串值與數(shù)字 3 混淆; 但是從編程的角度來看,兩者有很大的不同。
要表示數(shù)字,必須省略表示字符串的引號或反引號:
let num1 = 2let num2 = 56.65
與“真實(shí)世界”的數(shù)字相比,JavaScript 中的數(shù)字有幾個怪癖。 值 Infinity、-Infinity 和 NaN 都被視為數(shù)字(您可以使用 typeof 運(yùn)算符對此進(jìn)行測試)。 NaN 是“Not a Number”的縮寫,當(dāng)您嘗試對(等待它)不是數(shù)字的值執(zhí)行數(shù)學(xué)運(yùn)算時會出現(xiàn)。 當(dāng)其他有效的數(shù)值運(yùn)算返回非實(shí)數(shù)的結(jié)果時(例如,嘗試計(jì)算負(fù)數(shù)的平方根),結(jié)果也將為 NaN。
JavaScript 中的數(shù)字也有大小限制。 現(xiàn)實(shí)世界中的數(shù)字可以是任意大小,但在 JavaScript 中并非如此,其中數(shù)字僅限于 -(2?3 — 1) 和 (2?3 — 1) 之間的值。 對于其他一切,都有 BigInt。
大整數(shù)
這些與數(shù)字相似,但有一些關(guān)鍵區(qū)別。 BigInt 可以處理任何大小的數(shù)字。 BigInt 值可以通過將 `n` 附加到值或使用 `BigInt()` 函數(shù)來表示:
let largeNumber = 9007199256352991nlet largerNumber = BigInt(9107199256352991)
但是,BigInt 無權(quán)訪問 Math 對象中包含的函數(shù)。 它們也不能與操作中的數(shù)字一起使用:這將需要類型強(qiáng)制,這可能會降低 BigInt 值的精度。
布爾值
這是一種邏輯數(shù)據(jù)類型,存在于許多編程語言中。 這種類型的數(shù)據(jù)可以具有以下兩個值之一:`true` 或 `false`:
let yay = truelet nay = false
這些通常用于比較語句:
let x = 15let y = 21let result = x y // result = false
不明確的
undefined 類型表示尚未定義的值,例如尚未聲明值的變量:
let xconsole.log(`No value has been declared, so x = ${x}.`)// output: No value has been declared, so x = undefined.
null
null 數(shù)據(jù)類型表示空值或未知值,或“故意缺少任何對象值”。 這在概念上類似于 undefined,但必須顯式分配。 簡而言之,null 可以分配“無值”(按照慣例,不應(yīng)該以這種方式使用 undefined)。
function closeAccount(user) { user.balance = null
在上面的示例中,`null` 用于在關(guān)閉用戶帳戶時覆蓋現(xiàn)有余額值。 由于這與余額為 0 的帳戶不同,因此余額金額被故意覆蓋為“非價(jià)值”。
象征
符號數(shù)據(jù)類型的實(shí)例是唯一的:它們不能重復(fù)。 它們可用作唯一標(biāo)識符,并避免與對象和函數(shù)發(fā)生名稱沖突。 與字符串一樣,符號可以用作對象屬性的鍵(這是唯一可以以這種方式使用的兩種數(shù)據(jù)類型)。
為了更好地理解符號的“唯一性”,請考慮以下幾點(diǎn):
console.log(‘string’ === ‘string’) // result: trueconsole.log(Symbol(‘string’) === Symbol(‘string’)) // result: false
比較兩個字符串的結(jié)果是“真”,但比較具有相同值的兩個符號會產(chǎn)生“假”:雖然這兩個符號具有相同的值,但它們在內(nèi)存中是唯一的實(shí)例,永遠(yuǎn)不可能等價(jià)。
目的
JavaScript 中的對象是鍵值對的集合,稱為屬性。 如上所述,鍵可以是字符串或符號,但是關(guān)聯(lián)的值可以是任何數(shù)據(jù)類型。
let example = {word: ‘string’,number: ‘12’,existence: true,}
上面的代碼片段顯示了一個具有多個屬性(包括字符串、數(shù)字和布爾值)的對象的聲明。 這些屬性可以通過點(diǎn)表示法(例如,object.property)或類似數(shù)組的表示法(例如,object[‘property’])來訪問。 這是兩者的演示,使用上面聲明的“示例”對象:
if (example.existence) {console.log(example[‘word’] + example.number)}// output: string12
原始數(shù)據(jù)類型 vs 對象 vs 引用數(shù)據(jù)類型
JavaScript 中的數(shù)據(jù)類型通常分為兩類:原始數(shù)據(jù)類型和對象。 可以預(yù)見,對象是指對象數(shù)據(jù)類型,而討論的其他七種數(shù)據(jù)類型屬于原始數(shù)據(jù)類型。
您可能會遇到的另一個分組是原始數(shù)據(jù)類型和引用數(shù)據(jù)類型。
關(guān)注七爪網(wǎng),獲取更多APP/小程序/網(wǎng)站源碼資源!