JavaScript之數(shù)據(jù)類型

什么是數(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中布爾類型比較特殊,只有兩個取值 truefalse
  • 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(".");
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末爱葵,一起剝皮案震驚了整個濱河市施戴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌萌丈,老刑警劉巖赞哗,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辆雾,居然都是意外死亡肪笋,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涂乌,“玉大人,你說我怎么就攤上這事英岭⊥搴校” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵诅妹,是天一觀的道長罚勾。 經常有香客問我,道長吭狡,這世上最難降的妖魔是什么尖殃? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮划煮,結果婚禮上送丰,老公的妹妹穿的比我還像新娘。我一直安慰自己弛秋,他們只是感情好器躏,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蟹略,像睡著了一般登失。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挖炬,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天揽浙,我揣著相機與錄音,去河邊找鬼意敛。 笑死馅巷,一個胖子當著我的面吹牛,可吹牛的內容都是我干的草姻。 我是一名探鬼主播令杈,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼碴倾!你這毒婦竟也來了逗噩?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤跌榔,失蹤者是張志新(化名)和其女友劉穎异雁,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體僧须,經...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡纲刀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了担平。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片示绊。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡锭部,死狀恐怖,靈堂內的尸體忽然破棺而出面褐,到底是詐尸還是另有隱情拌禾,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布展哭,位于F島的核電站湃窍,受9級特大地震影響,放射性物質發(fā)生泄漏匪傍。R本人自食惡果不足惜您市,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望役衡。 院中可真熱鬧茵休,春花似錦、人聲如沸手蝎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柑船。三九已至帽撑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鞍时,已是汗流浹背亏拉。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逆巍,地道東北人及塘。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像锐极,于是被迫代替她去往敵國和親笙僚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內容