資料型別
- 1.?資料型別
- 2.?Undefined 型別
- 3.?Null 型別
- 它的作用
- 4.? Boolean 型別
- 5.?Number 型別
- 整數
- 浮點數
- 值的范圍
- NAN
- 數值轉換
- 6.?String 型別
- 字串轉義符
- 轉換為字串
- 模板字面量
- 7.?Symbol 型別
- 8.?Object 型別
1.?資料型別
ECMAScript 有 6 種簡單資料型別(也稱為原始型別): Undefined、 Null、Boolean、 Number、String 和 Symbol,
還有一種復雜資料型別叫 Object (一種無序名值對的集合),
在 ECMAScript 中不能定義自己的資料型別,所有值都可以用上述 7 種資料型別之一來表示,
使用 typeof 運算子可以用來確定變數的資料型別,
2.?Undefined 型別
Undefined 型別只有一個值,就是特殊值 undefined,
當使用 var 或 let 宣告了變數但沒有初始化時,就相當于給變數賦予了 undefined 值
3.?Null 型別
Null 型別只有一個值,就是特殊值 null,
給 typeof 傳一個 null 會回傳 object ,因為 null 被認為是一個對空物件的參考,
它的作用
在定義將來要保存物件值的變數時,建議使用 null 來初始化,
這樣,只要檢查這個變數的值是不是 null 就可以知道這個變數是否在后來被重新賦予了一個物件的參考.
4.? Boolean 型別
Boolean 型別有兩個字面值: true 和 false,
布林值字面量 true 和 false 是區分大小寫的,因此 True 和 False(及其他大小混寫形式)是有效的識別符號,但不是布林值,
這兩個布林值不同于數值,因此 true 不等于 1, false 不等于 0,
要將一個其他型別的值轉換為布林值,可以呼叫特定的 Boolean() 轉型函式:
不同型別與布林值之間的轉換規則:
| 資料型別 | 轉換為 true 的值 | 轉換為 false 的值 |
|---|---|---|
| Boolean | ture | false |
| String 型別 | 非空字串 | ”“(空字串) |
| Number | 非零數值(包括無窮值) | 0,NaN |
| Object | 任意物件 | null |
| Undefined | N/A(不存在) | undefined |
5.?Number 型別
整數
// 十進制
let intNum = 10;
// 八進制,前綴 0o
let octalNum = 0o70; // 十進制是 56
// 十進制,前綴 0x(區分大小寫) 十六進制數字(0~9 以及 A~F),
let hexNum = 0xA; // 十進制下是 10
使用八進制和十六進制格式創建的數值在所有數學操作中都被視為十進制數值,
浮點數
要定義浮點數,數值中必須包含小數點,而且小數點后面必須至少有一個數字,
小數點前面可以沒有整數,但推薦加上,
let floatNum1 = 0.1
// 科學計數法表示
// (一個數值(整數/浮點數)后跟一個大寫/小寫的字母e,再加上一個要乘的10的多少次冪)
let floatNum2 = 3.125e7 // 31250000
值的范圍
在多數瀏覽器中:
- 最小值:Number.MIN_VALUE ,值為 5e-32
- 最大值:Number.MAX_VALUE ,值為 1.797 693 134 862 315 7e+308,
如果某個計算得到的數值結果超出了 JavaScript 可以表示的范圍,那么這個數值會被自動轉換為無窮值,
- 正無窮大:Infinity
- 負無窮大:-Infinity
要確定一個值是不是有限大,可以使用isFinite() 函式,
NAN
有一個特殊的數值叫 NaN,意思是“不是數值”( Not a Number),用于表示本來要回傳數值的操作失敗了(而不是拋出錯誤),
(用 0 除任意數值在其他語言中通常都會導致錯誤,從而中止代碼執行,
但在 ECMAScript 中,0、+0 或 -0 相除會回傳 NaN)
幾個獨特的屬性:
- 任何涉及 NaN 的操作始侄訓傳 NaN
- NaN 不等于包括 NaN 在內的任何值,
console.log(NaN == NaN); // false
我們可以用 isNaN() 函式來判斷是否是 NaN,
數值轉換
將非數值轉換為數值:Number() 、 parseInt() 和 parseFloat() ,
(Number() 是轉型函式,可用于任何資料型別,后兩個函式主要用于將字串轉換為數值,)
Number() 空字串回傳0,paresInt() 回傳 NaN,
parseInt() 可以接收第二個引數,用于指定底數(進制數),
不傳底數引數相當于讓 parseInt() 自己決定如何決議,所以為避免決議出錯,建議始終傳給它第二個引數,
例如:
let num1 = parseInt("AF", 16); // 175
let num2 = parseInt("AF"); // NaN
parseFloat() 只決議十進制值,因此不能指定底數,
如果字串表示整數(沒有小數點或者小數點后面只有一個零),則 parseFloat() 回傳整數,
6.?String 型別
String(字串)資料型別表示零或多個 16 位 Unicode 字符序列,
ECMAScript 中的字串是不可變的( immutable),意思是一旦創建,它們的值就不能變了,
要修改某個變數中的字串值,必須先銷毀原始的字串,然后將包含新值的另一個字串保存到該變數,
字串可以使用雙引號( ")、單引號( ')或反引號( `)標示.
(以某種引號作為字串開頭,必須仍然以該種引號作為字串結尾)
字串的長度可以通過其 length 屬性獲取,
(如果字串中包含雙位元組字符,那么 length 屬性回傳的值可能不是準確的字符數,)
let text = "This is a sentence.";
console.log(text.length); // 19
字串轉義符
| 轉義符 | 描述 |
|---|---|
| \n | 換行符 |
| \\ | 斜桿 \ |
| \' | 單引號 |
| \" | 雙引號 |
| \t | tab 縮進 |
| \b | 空格 |
這些字符字面量可以出現在字串中的任意位置,且可以作為單個字符被解釋,
轉換為字串
- toString()
toString() 方法可見于數值、布林值、物件和字串值,
null 和 undefined 值沒有 toString() 方法,
let age = 11;
let ageAsString = age.toString(); // 字串 "11"
let found = true;
let foundAsString = found.toString(); // 字串 "true"
多數情況下, toString() 不接收任何引數,在對數值呼叫這個方法時, toString() 可以接收一個底數引數,即以什么底數來輸出數值的字串表示,
let num = 10;
console.log(num.toString()); // "10"
console.log(num.toString(2)); // "1010"
console.log(num.toString(8)); // "12"
console.log(num.toString(10)); // "10"
console.log(num.toString(16)); // "a"
- String()
如果你不確定一個值是不是 null 或 undefined,可以使用 String() 轉型函式,
String() 函式遵循如下規則:
- 如果值有 toString() 方法,則呼叫該方法(不傳引數)并回傳結果,
- 如果值是 null,回傳"null" ,
- 如果值是 undefined,回傳"undefined" ,
let value1 = 10;
let value2 = true;
let value3 = null;
let value4;
console.log(String(value1)); // "10"
console.log(String(value2)); // "true"
console.log(String(value3)); // "null"
console.log(String(value4)); // "undefined"
模板字面量
模板字面量會保持反引號內部的空格,可以保留換行符,
let thirdTemplateLiteral = `first line
second line`;
console.log(thirdTemplateLiteral);
/*
輸出結果:
first line
second line
*/
7.?Symbol 型別
Symbol(符號)是 ECMAScript 6 新增的資料型別,
符號是原始值,且符號實體是唯一、不可變的,
符號的用途是確保物件屬性使用唯一識別符號,不會發生屬性沖突的危險,
符號需要使用 Symbol() 函式初始化,
let genericSymbol = Symbol();
console.log(genericSymbol); // Symbol()
let fooSymbol = Symbol('foo');
console.log(fooSymbol); // Symbol(foo);
8.?Object 型別
ECMAScript 中的物件其實就是一組資料和功能的集合,
物件通過 new 運算子后跟物件型別的名稱來創建,
let obj = new Object();
因為在 ECMAScript 中 Object 是所有物件的基類,所以任何物件都有 Object 屬性和方法,
Object 實體有如下屬性和方法:
- constructor:用于創建當前物件的函式,
(在前面的代碼中,這個屬性的值就是 Object()函式) - hasOwnProperty(propertyName) :用于判斷當前物件實體(不是原型)上是否存在給定的屬性,
(要檢查的屬性名必須是字串,如 o.hasOwnProperty(“name”) 或 符號) - isPrototypeOf(object) :用于判斷當前物件是否為另一個物件的原型,
- propertyIsEnumerable( propertyName) :用于判斷給定的屬性是否可以使用 for-in 陳述句列舉,
(與 hasOwnProperty() 一樣,屬性名必須是字串) - toLocaleString() :回傳物件的字串表示,該字串反映物件所在的本地化執行環境,
- toString() :回傳物件的字串表示,
- valueOf() :回傳物件對應的字串、數值或布林值表示,通常與 toString() 的回傳值相同,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/299996.html
標籤:其他
上一篇:node.js的模塊化與包
下一篇:HTML第一篇
