avaScript原始數據類型包括有object
,null
,undefined
,boolean
,number
,string
。
symbol
從ES2015開始可用,bigint
從ES2020開始可用。其中object
是一個復雜的數據類型。
JavaScript是一種動態類型語言。這意味著變量不與類型相關聯。換句話說,一個變量可以保存不同類型的值。
例如在下面的type.js
文件中,counter變量初始化的值是120,之后被賦值為布爾值false
,然后又被賦值為字符串foo
,
let counter = 120; // counter is a number
counter = false; // counter is now a boolean
counter = "foo"; // counter is now a string
如果你需要知道當前變量存儲的值類型,可以使用javascript的typeof
運算符,獲得變量的數據類型。
let counter = 120;
console.log(typeof(counter)); // "number"
counter = false;
console.log(typeof(counter)); // "boolean"
counter = "Hi";
console.log(typeof(counter)); // "string"
undefined 未定義
undefined
類型是只有一個原始類型的值undefined
。默認情況下,當一個變量被聲明但未初始化時,它被賦值為undefined
。
在下面的示例中,我們在第一行聲明一個變量counter
。由于counter
尚未初始化,因此為其分配的值是undefined
。counter
的類型也是undefined
。
值得注意的是,當您使用尚未聲明的變量時,typeof
運算符也會返回undefined
。
let counter;
console.log(counter); // undefined
console.log(typeof counter); // undefined
null 空類型
null
類型是第二種原始數據類型,也只有一個值null
。
當你在瀏覽器的控制臺運行代碼typeof null
時,代碼將會返回一個對象。這是一個在Javascript的bug。
雖然有人曾經提出過修復此錯誤,但被拒絕。原因是修復此Bug會破壞許多現有站點。
在JavaScript數據類型null
是等于undefined
的,因為在Javascript的null值是等于布爾值false
,undefined
也是如此。
let obj = null;
console.log(typeof obj); // object
console.log(null == undefined); // true
number 數值類型
JavaScript使用用number
類型來表示整數和浮點數。下面的語句聲明一個變量并用一個整數初始化它的值。要表示浮點數,請包含一個小數點,后跟至少一個數字。
如果數字看起來是整數,例如代碼let price = 200.00;
,JavaScript會自動將浮點數轉換為整數。
原因是Javascript總是希望使用更少的內存,因為浮點值使用的內存是整數值的兩倍。
如果要獲取數值類型的范圍,可以打開瀏覽器控制臺運行代碼Number.MIN_VALUE
獲取最小值和運行代碼Number.MAX_VALUE
獲取最大值。
let num = 100;
let price= 12.5;
let discount = 0.05;
NaN 非數值類型
NaN
代表非數值。它是一個特殊的數值,表示一個無效的數字。當強制轉換字符串為值時,它會返回NaN
。
NaN
有兩個特點。第一特點是所有與NaN
的運算都會返回NaN
,例如代碼console.log(NaN/2);
。
第二個特點是NaN
不等于任何值,包括它自己本省,例如代碼console.log(NaN == NaN);
。
console.log('a'/2); // NaN;
console.log(NaN/2); // NaN
console.log(NaN == NaN); // false
string 字符串類型
在JavaScript,字符串是零個或多個字符的序列。字符串文字以單引號 '
或雙引號 "
開始和結束。
以雙引號開頭的字符串必須以雙引號結尾。同樣,以單引號開頭的字符串也必須以單引號結尾。
如果要在字符串中使用單引號或雙引號,則需要使用反斜杠對其進行轉義。例如代碼let message = 'I\\'m also a valid string';
JavaScript字符串是不可變的。這意味著它一旦創建就無法修改。但是,您可以從現有字符串創建新字符串。
在string.js
例子中首先,聲明str
變量并將其初始化為'JavaScript'
。其次,使用加號運算符組合'JavaScript'
與' String'
,使其值成功為'Javascript String'
。
在幕后,JavaScript引擎創建一個新字符串來保存'JavaScript String'
并銷毀原始字符串'JavaScript'
和'String'
。
let str = 'JavaScript';
str = str + ' String';
boolean 布爾類型
布爾值類型有兩個字面值,分別是true
和false
。下面的示例聲明了兩個保存布爾值的變量。
JavaScript允許將其他類型的值轉換為布爾值的true
或false
。要將另一種數據類型的值轉換為布爾值,請使用Boolean()
函數。
確切的說Boolean()
不是函數,它是一個對象,用于創建布爾值,Boolean
接受一個參數,并將指定的參數轉換為布爾值。
let inProgress = true;
let completed = false;
console.log(typeof completed); // boolean
console.log(Boolean('Hi'));// true
console.log(Boolean('')); // false
console.log(Boolean(20)); // true
console.log(Boolean(Infinity)); // true
console.log(Boolean(0)); // false
console.log(Boolean({foo: 100})); // true on non-empty object
console.log(Boolean(null));// false
symbol 符號類型
JavaScript在ES6中添加了一個原始類型符號symbol
。與其他原始類型不同,symbol
符號類型沒有文字形式。
要創建符號,請調用函數Symbol
,每次調用符號函數都會創建一個新的唯一值。
symbol值可以作為對象屬性的標識符,通常使用它來創建對象的私有屬性與方法數據類型僅有的目的。
let s1 = Symbol();
console.log(Symbol() == Symbol()); // false
bigint 類型
**BigInt
是一種內置對象,它提供了一種方法來表示大于2 ^53^ –1的整數。這原本是 Javascript中可以用Number
表示的最大數字。 BigInt
**可以表示任意大的整數。
它在某些方面類似于Number
,但是也有幾個不同點,不能用于Math
對象中的方法。
不能和任何Number
實例混合運算,兩者必須轉換成同一種類型。在兩種類型來回轉換時要小心,因為BigInt
變量在轉換成Number
變量時可能會丟失精度。
要創建bigint
數字可以在一個整數的后面加追加字母n
,例如10n
,或者調用函數 BigInt()
并傳遞一個整數值或著是字符串的數字。
如果傳遞的是字符串的數字, BigInt()
將會強制轉換字符串類型為數值。
const theBiggestInt = 9007199254740991n;
const alsoHuge = BigInt(9007199254740991);
object 對象類型
在JavaScript,對象是屬性的集合,每個屬性都定義為鍵值對。對象的屬性名稱可以是任何字符串或者符號symbol的值。
如果屬性名稱不是有效標識符,您可以在屬性名稱周圍使用引號。例如,如果對象的屬性名稱是full-name
,則必須將其放在引號中。
對象的屬性不僅可以保存簡單值,也可以保存復雜的數據類型對象。
let contact = {
firstName: 'web',
lastName: 'myfreax',
'full-name':'web@myfreax'
email: 'web@myfreax.com',
phone: '408555-9999',
address: {
building: '4000',
street: 'North 1st street',
city: 'San Jose',
state: 'CA',
country: 'USA'
}
}
要訪問對象的屬性,您可以使用點符號.
或者類似數組的符號[]
。當要訪問屬性嵌套的對象時,也可以繼續使用點符號.
訪問嵌套的屬性。
如果你訪問一個不存在的屬性,你會得到一個未定義的值。
console.log(contact.firstName);
console.log(contact.lastName);
console.log(contact.age); // undefined
console.log(contact['phone']); // '(408)-555-9999'
console.log(contact['email']); // 'web@myfreax'
console.log(contact['address']['building']); // '4000'
console.log(contact.address.building); // '4000'
結論
JavaScript的基本類型是number
、string
、boolean
、null
、undefined
和symbol
以及bigint
和復雜類型對象object
。
-
javascript
+關注
關注
0文章
525瀏覽量
53945 -
數據類型
+關注
關注
0文章
236瀏覽量
13663 -
undefined
+關注
關注
0文章
11瀏覽量
2817
發布評論請先 登錄
相關推薦
評論