什么是數(shù)據(jù)
- 生活中無時無刻都在跟數(shù)據(jù)打交道
- 例如:人的體重、身高、收入大莫、性別等數(shù)據(jù)等
- 在我們使用計算機的過程中,也會接觸到各種各樣的數(shù)據(jù)
- 例如: 文檔數(shù)據(jù)官份、圖片數(shù)據(jù)只厘、視頻數(shù)據(jù)等
數(shù)據(jù)分類
靜態(tài)數(shù)據(jù)
- 靜態(tài)數(shù)據(jù)是指一些永久性的數(shù)據(jù)烙丛,一般存儲在硬盤中。硬盤的存儲空間一般都比較大羔味,現(xiàn)在普通計算機的硬盤都有500G左右河咽,因此硬盤中可以存放一些比較大的文件
- 存儲的時長:計算機關閉之后再開啟,這些數(shù)據(jù)依舊還在赋元,只要你不主動刪掉或者硬盤沒壞忘蟹,這些數(shù)據(jù)永遠都在
- 哪些是靜態(tài)數(shù)據(jù):靜態(tài)數(shù)據(jù)一般是以文件的形式存儲在硬盤上,比如文檔搁凸、照片寒瓦、視頻等。
動態(tài)數(shù)據(jù)
- 動態(tài)數(shù)據(jù)指在程序運行過程中坪仇,動態(tài)產生的臨時數(shù)據(jù)杂腰,一般存儲在內存中。內存的存儲空間一般都比較小椅文,現(xiàn)在普通計算機的內存只有8G左右喂很,因此要謹慎使用內存,不要占用太多的內存空間
- 存儲的時長:計算機關閉之后皆刺,這些臨時數(shù)據(jù)就會被清除
- 哪些是動態(tài)數(shù)據(jù):當運行某個程序(軟件)時少辣,整個程序就會被加載到內存中,在程序運行過程中羡蛾,會產生各種各樣的臨時數(shù)據(jù)漓帅,這些臨時數(shù)據(jù)都是存儲在內存中的。當程序停止運行或者計算機被強制關閉時痴怨,這個程序產生的所有臨時數(shù)據(jù)都會被清除忙干。
- 既然硬盤的存儲空間這么大,為何不把所有的應用程序加載到硬盤中去執(zhí)行呢浪藻?主要原因就是內存的訪問速度比硬盤快N倍
靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)的相互轉換
- 從磁盤加載到內存(靜到動)
- 從內存保存到磁盤(動到靜)
數(shù)據(jù)的計量單位
- 不管是靜態(tài)還是動態(tài)數(shù)據(jù)捐迫,都是0和1組成的
- 數(shù)據(jù)越大,包含的0和1就越多
1 B(Byte字節(jié)) = 8 bit(位)
// 00000000 就是一個字節(jié)
// 111111111 也是一個字節(jié)
// 10101010 也是一個字節(jié)
// 任意8個0和1的組合都是一個字節(jié)
1 KB(KByte) = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
JavaScript數(shù)據(jù)類型
- 為程序員我們最關心的是內存中的動態(tài)數(shù)據(jù), 因為我們寫的程序就是在內存中的
- 程序在運行過程中會產生各種各樣的臨時數(shù)據(jù), 為了方便數(shù)據(jù)的運算和操作, JavaScript也對這些數(shù)據(jù)進行了分類, 提供了豐富的數(shù)據(jù)類型
- 在JavaScript中一共有六種數(shù)據(jù)類型
JavaScript基本數(shù)據(jù)類型
-
String
字符串類型
在JavaScript中無論是整數(shù)還是小數(shù)都屬于數(shù)值類型 -
Number
數(shù)值類型
在JavaScript中無論是通過單引號還是雙引號括起來的內容都屬于字符串類型 -
Boolean
布爾值類型
在JavaScript中布爾類型比較特殊,只有兩個取值true
和false
-
Null
空值類型 -
Undefined
未定義類型
在JavaScrip中也比較特殊,只有一個取值undefined
JavaScript引用類型
-
Object
對象類型
數(shù)據(jù)類型檢測
在JavaScript中可以用 typeof
操作符來檢測數(shù)據(jù)類型, typeof
操作符會將檢查的結果以字符串的形式返回給我們
let a = 666;
console.log(typeof a); // number
console.log(typeof 123); // number
console.log(typeof 3.14); // number
let b = 'abcd';
console.log(typeof b); // string
console.log(typeof 'abc'); // string
console.log(typeof "abc"); // string
let c = true;
console.log(typeof c); // boolean
console.log(typeof true); // boolean
console.log(typeof false); // boolean
let d;
console.log(typeof d); // undefined
JavaScript數(shù)據(jù)類型轉換
轉換為字符串類型
將數(shù)值類型Number
轉換為字符串類型
- 通過
toString()
可以將數(shù)值類型轉換為字符串類型
let value = 123;
console.log(value); // 123
console.log(typeof value); // number
// 將 value 中的內容拷貝一份,然后將拷貝的數(shù)據(jù)轉化為字符串返回
// toString() 方法是對拷貝的數(shù)據(jù)進行轉換,不會影響到原數(shù)據(jù)
let str = value.toString();
console.log(str); // 123
console.log(typeof str); // string
- 可以通過
String()
將數(shù)值類型轉換為字符串類型
let value = 123;
console.log(value); // 123
console.log(typeof value); // number
let str = String(value);
console.log(str); // 123
console.log(typeof str); // string
- 可以通過
變量 + ""
或變量 + ''
將數(shù)值類型轉換為字符串類型
let value = 123;
let str1 = value + ''; // 123
let str2 = value + ""; // 123
console.log(typeof str1); // string
console.log(typeof str2); // string
將布爾類型Boolean
轉換為字符串類型
- 通過
toString()
可以將布爾類型轉換為字符串類型
let value = true;
console.log(value); // true
console.log(typeof value); // boolean
// 將 value 中的內容拷貝一份,然后將拷貝的數(shù)據(jù)轉化為字符串返回
// toString() 方法是對拷貝的數(shù)據(jù)進行轉換,不會影響到原數(shù)據(jù)
let str = value.toString();
console.log(str); // true
console.log(typeof str); // string
- 可以通過
String()
將布爾類型轉換為字符串類型
let value = true;
console.log(value); // true
console.log(typeof value); // boolean
let str = String(value);
console.log(str); // true
console.log(typeof str); // string
- 可以通過
變量 + ""
或變量 + ''
將布爾類型轉換為字符串類型
let value = true;
let str1 = value + ''; // true
let str2 = value + ""; // true
console.log(typeof str1); // string
console.log(typeof str2); // string
將未定義undefined
類型轉換為字符串類型
- 可以通過
String()
將未定義類型轉換為字符串類型
let value = undefined;
console.log(value); // undefined
console.log(typeof value); // undefined
// 根據(jù)傳入的參數(shù)重新生成一個字符串
let str = String(value);
console.log(str); // undefined
console.log(typeof str); // string
- 可以通過
變量 + ""
或變量 + ''
將布爾類型轉換為字符串類型
let value = undefined;
let str1 = value + ''; // undefined
let str2 = value + ""; // undefined
console.log(typeof str1); // string
console.log(typeof str2); // string
將空類型null
轉換為字符串類型
- 可以通過
String()
將空類型轉換為字符串類型
let value = null;
console.log(value); // null
console.log(typeof value); // object
let str = String(value);
console.log(str); // null
console.log(typeof str); // string
- 可以通過
變量 + ""
或變量 + ''
將布爾類型轉換為字符串類型
let value = null;
let str1 = value + ''; // null
let str2 = value + ""; // null
console.log(typeof str1); // string
console.log(typeof str2); // string
將常量轉換為字符串類型
- 可以通過
String()
將常量換為字符串類型
let value = String(123);
console.log(typeof value); // string
- 可以通過
變量 + ""
或變量 + ''
將數(shù)值類型轉換為字符串類型
let value1 = 123 + '';
let value2 = 123 + "";
console.log(value1); // 123
console.log(typeof value1); // string
console.log(value2); // 123
console.log(typeof value2); // string
轉換為數(shù)值類型
字符串轉換為數(shù)值類型
- 通過
Number()
方式來轉換
let str = '123';
console.log(str); // 12
console.log(typeof str); // string
let value = Number(str);
console.log(value); // 123
console.log(typeof value); // number
let res = Number('456');
console.log(res); // 456
console.log(typeof res); // number
// 如果字符串中沒有數(shù)據(jù),那么轉換的幾個為 0
// 如果字符串中的數(shù)據(jù)不僅僅是數(shù)值,那么轉換結果是 NaN
let str1 = ' ';
let value1 = Number(str1); // 0
console.log(typeof value1); // number
let str2 = '12px';
let value2 = Number(str2); // NaN
console.log(typeof value2); // number
- 通過數(shù)學運算中的加號和減號來轉換
// 通過加號和減號可以將其他類型轉化為數(shù)值類型,但會改變其正負性
// 加號和減號本質是調用了Number函數(shù)
let str = '123';
let value = +str;
// let value = -str; // -123
console.log(value); // 123
console.log(typeof value); // number
- 通過
parseInt()
或parseFloat()
來轉換
// parseInt()和 parseFloat()都會從左至右提取數(shù)值,一旦遇到非數(shù)值就會立即停止
// 停止的時候還有沒提取到數(shù)值,則返回NaN
// parseInt()和 parseFloat()都將傳入的數(shù)據(jù)當做字符串處理
let str1 = '12px';
let str2 = '3.14px';
let res1 = parseInt(str1); // 12
let res2 = parseInt(str2) // 3
let res3 = parseFloat(str2) // 3.14
布爾類型轉換為數(shù)值類型
- 通過
Number()
方式來轉換
// 如果布爾類型 true,那么轉換之后的結果是 1
// 如果布爾類型 false,那么轉換之后的結果是 0
let flag = true;
let value = Number(flag);
console.log(value); // 1
console.log(typeof value); // number
- 通過數(shù)學運算中的加號和減號來轉換
未定義轉換為數(shù)值類型
- 通過
Number()
方式來轉換
// 如果是未定義類型,那么轉換之后的結果是`NaN`
let flag = unddefined;
let value = Number(flag);
console.log(value); // NaN
console.log(typeof value); // number
- 通過數(shù)學運算中的加號和減號來轉換
空類型轉換為數(shù)值類型
- 通過
Number()
方式來轉換
// 如果是空類型,那么轉換之后的結果是0
let flag = null;
let value = Number(flag);
console.log(value); // 0
console.log(typeof value); // number
- 通過數(shù)學運算中的加號和減號來轉換
轉換為布爾類型
在JavaScript中想要將基本類型轉換為布爾類型,只需調用 boolean()
- 將字符串類型轉換為布爾類型
只要字符串中有內容都會轉換為true
,只有字符串中沒有內容才會轉換為false
let str = 'abc';
let flag = Boolean(str);
console.log(flag); // true
console.log(typeof flag); // boolean
- 將數(shù)值類型轉換為布爾類型
只有數(shù)值是0時才會轉換為false
,其他都會轉換為true
NaN
也會轉換成false
let num = 888;
let flag = Boolean(num);
console.log(flag); // true
console.log(typeof flag); // boolean
- 將未定義類型轉換為布爾類型
let num = undefined;
let flag = Boolean(num);
console.log(flag); // false
console.log(typeof flag); // boolean
- 將空類型轉換為布爾類型
let num = null;
let flag = Boolean(num);
console.log(flag); // false
console.log(typeof flag); // boolean
基本包裝類型
之所以能夠訪問基本數(shù)據(jù)類型的屬性和方法,是因為在運行的時候系統(tǒng)自動將基本數(shù)據(jù)類型包裝成了對象類型
let str = "www.reibang.com";
// let str = new String(str);
console.log(str.length);
str.split(".");