JS中的數(shù)據(jù)類型

`計算機顧名思義可以進行數(shù)學計算的機器,因此,計算機理所當然的可以處理各種數(shù)值,但是,計算機能夠處理的遠遠不只是數(shù)值,它還能處理文本,圖形,視頻,音頻,網(wǎng)頁等各種各樣的數(shù)據(jù),不同的數(shù)據(jù),需要定義不同的數(shù)據(jù)類型,javascript定義了一下數(shù)據(jù)類型:

字符串string , 數(shù)字number , 對象object, 布爾boolean , 空值null, undefined

基本類型:string,number,Boolean,Null,Number引用類型:object基本包裝類型和引用類型的區(qū)別即使生存周期不同,引用類型在代碼執(zhí)行后就會銷毀實例

  1. string——字符串

注:用雙引號和單引號表示的字符完全相同
javascript就是用' ' 或 " "括起來的字符表示如果 ' 本身也是一個字符,就用" "表示: "I'm OK"如果字符串內(nèi)部包含 ' 和 " ,就用轉(zhuǎn)義字符 \ 來標識: 'I'm "OK"!'; 表示的字符串內(nèi)容是:I'm "OK"!轉(zhuǎn)義字符可以轉(zhuǎn)義很多字符,比如:\n表示換行,\t表示制表符,字符 \ 本身也要轉(zhuǎn)義,所以\表示的字符是\

(由于多行字符串用\n寫起來比較費事,所以最新的ES6新增一種多行字符串的表示方法,用'...'表示:

這是一個多行字符串;)需要特別注意的是:字符串是不可變的,如果對字符串的某個索引賦值,不會有任何錯誤,但是,也不會有任何效果:

var s = 'Test';s[0] = 'X';alert(s); // s仍然為'Test'

javascript為字符串提供了一些方法,調(diào)用這寫方法,不會改變字符串原有的內(nèi)容,而是返回一個新的字符串:1. toUpperCase() 把一個字符串全部變成大寫:

var s = 'Hello';s.toUpperCase(); // 返回'HELLO'

  1. toLowerCase()把字符串全部變成小寫3. indexOf()返回搜索指定字符串出現(xiàn)的位置

var s = 'hello, world';s.indexOf('world'); // 返回7s.indexOf('World'); // 沒有找到指定的子串嘲驾,返回-1

  1. sbustring()返回指定索引區(qū)間的子串

var s = 'hello, world's.substring(0, 5); // 從索引0開始到5(不包括5)袁波,返回'hello's.substring(7); // 從索引7開始到結(jié)束,返回'world'

2 . number——數(shù)值
注:表示整數(shù)和浮點數(shù)值
javascript不區(qū)分整數(shù)和浮點數(shù)洲赵,統(tǒng)一用number表示以下都是合法的number]數(shù)據(jù)類型:---------------------------------------------------------------------------------------------------------------------------------123;//整數(shù)0.234;//浮點數(shù)0.2341.235e3;//科學計數(shù)法表示1.2345*1000,等同于1234.5-22;//負數(shù)NaN;//Not a number,當無法計算結(jié)果時,用NaN表示Infinity;//Infinity表示無限大,當數(shù)值超過了javascriptde的number所能表示的范圍時,就表示為Infinity-----------------------------------------------------------------------------------------------------------------------------------( 注意:1.NaN這個的number與所有其他值(包括它自己)懂不相等,如:NaN === NaN; //false 唯一能判斷NaN的方法是通過isNaN]()函數(shù):isNaN(NaN]);//true
2.浮點數(shù)的比較: 1 / 3 === ( 1 - 2 / 3 ) ; //false 這不是javascript的設(shè)計缺陷,因為浮點數(shù)在運算過程中會產(chǎn)生誤差,因為計算機無法精確的表示無限循環(huán)小數(shù),要比較兩個數(shù)是否相等,只能計算他們之差的絕對值,看是否小于某個域值:Math.abs( 1 / 3 - ( 1 - 2 / 3)) < 0.0000001 : // true )
javascript對象的鍵都是字符串類型,值可以是任意數(shù)據(jù)類型

3 . Object——對象
(1).數(shù)組
slice()對應(yīng)string的substring(),它截取數(shù)組的部分元素,返回一個新的數(shù)組:
var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];arr.slice(0, 3); // 從索引0開始聂使,到索引3結(jié)束盐欺,但不包括索引3: ['A', 'B', 'C']arr.slice(3); // 從索引3開始到結(jié)束: ['D', 'E', 'F', 'G']

注意到:slice()的參數(shù)包含開始索引,不包含結(jié)束索引 如果不給slice()傳遞參數(shù),將從頭到尾截取所有元素,利用這一點,我們很容易復制一個數(shù)組:

var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; var aCopy = arr.slice(); aCopy; // ['A', 'B', 'C', 'D', 'E', 'F', 'G'] aCopy === arr; // false

push()和pop() , push()想數(shù)組末尾加若干元素,pop()刪除數(shù)組最后一個元素,并返回該元素:

var arr = [1, 2]; arr.push('A', 'B'); // 返回Array新的長度: 4 arr; // [1, 2, 'A', 'B'] arr.pop(); // pop()返回'B' arr; // [1, 2, 'A'] arr.pop(); arr.pop(); arr.pop(); // 連續(xù)pop 3次 arr; // [] arr.pop(); // 空數(shù)組繼續(xù)pop不會報錯泊柬,而是返回undefined arr; // []
unshift()和shift(), unshift()向Array頭部插入若干元素, shift()則是刪除數(shù)組的第一個元素:

var arr = [1, 2];arr.unshift('A', 'B'); // 返回Array新的長度: 4arr; // ['A', 'B', 1, 2]arr.shift(); // 'A'arr; // ['B', 1, 2]arr.shift(); arr.shift(); arr.shift(); // 連續(xù)shift 3次arr; // []arr.shift(); // 空數(shù)組繼續(xù)shift不會報錯蜜唾,而是返回undefinedarr; // []sort(), 對當前Array排序,它會直接修改當前Array的元素位置,直接調(diào)用時,按默認的順序排序:

var arr = ['B', 'C', 'A'];arr.sort();arr; // ['A', 'B', 'C']reverse(),把整個的Array元素反轉(zhuǎn):

var arr = ['one', 'two', 'three'];arr.reverse(); arr; // ['three', 'two', 'one']
splice()方法是修改數(shù)組的"萬能方法",它可以從制定索引的位置開始,刪除若干元素,再從該位置添加若干元素:
//刪除又添加var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle'];// 從索引2開始刪除3個元素,然后再添加兩個元素:arr.splice(2, 3, 'Google', 'Facebook'); // 返回刪除的元素 ['Yahoo', 'AOL', 'Excite']arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']// 只刪除,不添加:arr.splice(2, 2); // ['Google', 'Facebook']arr; // ['Microsoft', 'Apple', 'Oracle']// 只添加,不刪除:arr.splice(2, 0, 'Google', 'Facebook'); // 返回[],因為沒有刪除任何元素arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']concat()把當前數(shù)組與另一個數(shù)組鏈接起來,返回一個新的數(shù)組:

var arr = ['A', 'B', 'C'];var added = arr.concat([1, 2, 3]);added; // ['A', 'B', 'C', 1, 2, 3]arr; // ['A', 'B', 'C']
實際上concat()可以接收任意多個元素和數(shù)組,并自動把數(shù)組拆開,然后全部添加到新的數(shù)組里:
var arr = ['A', 'B', 'C'];arr.concat(1, 2, [3, 4]); // ['A', 'B', 'C', 1, 2, 3, 4]

join()將當前數(shù)組按制定的字符串連接起來,然后返回連接后的字符串:
var arr = ['A', 'B', 'C', 1, 2, 3];arr.join('-'); // 'A-B-C-1-2-3'如果Array
的元素不是字符串杂曲,將自動轉(zhuǎn)換為字符串后再連接2.null & undefinednull表示一個"空"值,它和 0 以及字符串' '不同, 0表示一個數(shù)值,' '表示長度為0的字符串,null表示"空"的值undefined表示未定義,僅僅在判斷函數(shù)參數(shù)是否傳遞的情況下有用;( 大多數(shù)情況下,我們用null )

3.數(shù)組是按順序排列的集合,集合的每個值稱為元素,數(shù)組可包含任意類型的數(shù)據(jù);
4.對象是一組由鍵-值組成的無序集合:
var person = { name: 'Bob', age: 20, tags: ['js', 'web', 'mobile'], city: 'Beijing', hasCar: true, zipcode: null};

4. boolean——布爾值

注:true和false是區(qū)分大小寫的.也就是說,True和False(以及其他的混合大小寫形式)都不是Boolean值,只是標識符
布爾型(5種false)javascript把 null ,undefined 袁余, NaN 擎勘,0 ,和空字符串‘ ’ 視為false其他 一概·視為true

5. Null——空值

注:Null類型只有一個值就是null.如果這個變量準備在將來用來保存對象,那么最好將該變量初始化為null而不是其他值.
這樣一來,只要直接檢查null值就可以知道相應(yīng)的變量是否已經(jīng)保存了一個對象的引用.

  1. Undefined——值未定義
    注:Undefined類型只有一個值,即特色的undefined.在使用var聲明變量但未對其加以初始化時,這個變量的值就是undefined

變量:javascript的變量名:大小寫英文,數(shù)字,$ 和 _ 組成,但不能以數(shù)字開頭,不能是關(guān)鍵字;(雖然變量名也可以是中文,但是不要給自己找麻煩); 申明一個變量用var, 一個變量只能申明一次,可以被多次賦值為任意類型的數(shù)據(jù); *這種變量本身類型不固定的語言稱之為:動態(tài)語言 *在申明變量必須指定變量類型的,如果賦值的時候,類型不匹配,就會報錯,稱之為靜態(tài)語言,如java語言 int a = 123; // a是整數(shù)類型變量颖榜,類型用int申明 a = "ABC"; // 錯誤:不能把字符串賦給整型變量 (和靜態(tài)語言相比,動態(tài)語言更靈活,就是這個原因)

Strict模式:javascript允許初學者或者說不強制要求用var聲明變量,這個設(shè)計錯誤將會帶來嚴重的后果,如果一個變量沒有通過var申明就被使用,那么該變量就會被自動申請為全局變量: i = 10; // i 現(xiàn)在是全局變量
在同一個網(wǎng)頁的不同javascript文件中,如果都不用var申明變量,恰好都使用了變量i,將造成變量 i 相互影響,產(chǎn)生難以調(diào)試的錯誤結(jié)果;用var聲明的變量不是全局變量,它的范圍被限制在申明它的函數(shù)體內(nèi),同名變量在不同的函數(shù)體內(nèi)互不沖突.-----為了修補javascript這一嚴重設(shè)計缺陷,ECMA在后續(xù)規(guī)范中推出了strict模式,在該模式下運行javascript代碼,強制通過var聲明變量,未通過var聲明變量就使用的,將導致運行錯誤------(啟用strict模式的方法是在javascript的第一行寫上: 'use strict;' 這是一個字符串,不支持strict模式的瀏覽器,將會把它當做字符串語句來執(zhí)行,支持strict模式的瀏覽器,將開啟strict模式運行javascript. )
運算符:javascript在設(shè)計比較運算符時,有兩種比較運算符:
1.第一種是"==",它會自動轉(zhuǎn)換數(shù)據(jù)類型,再進行比較,會得到詭異的結(jié)果;2.第二種是"===",它不會自動轉(zhuǎn)換數(shù)據(jù)類型,蜀國類型不一致,返回false,如果一致再比較;由于javascript的這個設(shè)計缺陷,不要使用"==",始終堅持使用"==="

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末棚饵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子掩完,更是在濱河造成了極大的恐慌噪漾,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件且蓬,死亡現(xiàn)場離奇詭異欣硼,居然都是意外死亡,警方通過查閱死者的電腦和手機恶阴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進店門诈胜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人存淫,你說我怎么就攤上這事耘斩。” “怎么了桅咆?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵括授,是天一觀的道長。 經(jīng)常有香客問我岩饼,道長荚虚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任籍茧,我火速辦了婚禮版述,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寞冯。我一直安慰自己渴析,他們只是感情好晚伙,可當我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著俭茧,像睡著了一般咆疗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上母债,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天午磁,我揣著相機與錄音,去河邊找鬼毡们。 笑死迅皇,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的衙熔。 我是一名探鬼主播登颓,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼青责!你這毒婦竟也來了挺据?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤脖隶,失蹤者是張志新(化名)和其女友劉穎扁耐,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體产阱,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡婉称,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了构蹬。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片王暗。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖庄敛,靈堂內(nèi)的尸體忽然破棺而出俗壹,到底是詐尸還是另有隱情,我是刑警寧澤藻烤,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布绷雏,位于F島的核電站,受9級特大地震影響怖亭,放射性物質(zhì)發(fā)生泄漏涎显。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一兴猩、第九天 我趴在偏房一處隱蔽的房頂上張望期吓。 院中可真熱鬧,春花似錦倾芝、人聲如沸讨勤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悬襟。三九已至衅码,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間脊岳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工垛玻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留割捅,地道東北人。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓帚桩,卻偏偏與公主長得像亿驾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子账嚎,可洞房花燭夜當晚...
    茶點故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容