站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        詳細(xì)解析JavaScript中的六大基本數(shù)據(jù)類型

        本篇文章給大家?guī)?lái)了JavaScript中關(guān)于六大基本數(shù)據(jù)類型的相關(guān)知識(shí),希望對(duì)大家有幫助。

        詳細(xì)解析JavaScript中的六大基本數(shù)據(jù)類型

        一、區(qū)分大小寫

        在JavaScript中,所有的一切(變量、函數(shù)和操作符)都區(qū)分大小寫。這也就意味著,變量名test和變量名Test分別表示兩個(gè)不同的變量。

        二、標(biāo)識(shí)符

        所謂的表示標(biāo)識(shí)符,就是指變量、函數(shù)名和操作符,或者函數(shù)的參數(shù)。標(biāo)志符的格式規(guī)則如下:

        1、第一個(gè)字符必須是一個(gè)字符、下劃線(_)或者一個(gè)美元符號(hào)($);

        2、其他的字符可以是字母、下劃線、美元符號(hào)和數(shù)字;

        按照慣例,JavaScript的標(biāo)識(shí)符采用小駝峰書(shū)寫格式,也就是打開(kāi)一個(gè)字母小寫,剩下的單詞的首字母大寫。例如:firstChirld、myCar;

        當(dāng)然,標(biāo)識(shí)符采用小駝峰書(shū)寫格式不是強(qiáng)制要求,但是可以便于我們理解代碼,在書(shū)寫時(shí)盡量用小駝峰書(shū)寫格式,便于別人理解你的代碼。

        三、注釋

        JavaScript中的注釋方法分為單行注釋和多行注釋:
        單行注釋:

        //這是一個(gè)單行注釋

        多行注釋:

        /* *這是一個(gè) *多行注釋 */

        四、語(yǔ)句

        在JavaScript中,語(yǔ)句都是以一個(gè)分號(hào)結(jié)尾;如果省略分號(hào),則由解釋器去確定結(jié)尾。如下例所示:

        var sum = a + b			//即使沒(méi)有分號(hào)也是有效語(yǔ)句——不推薦 var diff = a - b;		//有效語(yǔ)句——推薦

        五、變量

        JavaScript中的變量類型是弱類型的,所謂弱類型就是可以用來(lái)保存任何類型的數(shù)據(jù)。換句話說(shuō),每個(gè)變量?jī)H僅是一個(gè)用于保存值的占位符而已。
        定義變量時(shí)用var關(guān)鍵字,后面跟變量名(即標(biāo)識(shí)符)。如下所示:

        var  message;

        JavaScript也支持直接初始化變量,因此在定義變量的同時(shí)就可以設(shè)置變量的值。如下所示:

        var message = "Hello world!";

        有一點(diǎn)必須注意,即用var關(guān)鍵字定義的變量將成為定義該變量的作用域中的局部變量。也就是說(shuō),如果函數(shù)中使用var定義一個(gè)變量,那么這個(gè)變量在函數(shù)運(yùn)行結(jié)束后就會(huì)被銷毀。例如:

        function test(){ 	var message = "Hello";		//局部變量 } test(); console.log(message);		//錯(cuò)誤!

        出現(xiàn)錯(cuò)誤的原因是,變量message是在函數(shù)test()中使用var定義的。當(dāng)函數(shù)被調(diào)用時(shí),就會(huì)創(chuàng)建變量并為其賦值。而在此之后,這個(gè)變量會(huì)立即銷毀,因此,例子中的下一行代碼就會(huì)導(dǎo)致錯(cuò)誤。不過(guò),可以像下面這樣省略關(guān)鍵字var,從而創(chuàng)建一個(gè)全局變量:

        function  test(){ 	message = "Hello";			//全局變量 } test(); console.log(message);			//"Hello"

        在這里省略了關(guān)鍵字var,message就變成了全局變量。這樣,只要調(diào)用一次test()函數(shù),這個(gè)變量就被定義了,全局變量被定以后,就可以在函數(shù)外部的任何地方都可以被訪問(wèn)到。
        雖然省略關(guān)鍵字var可以定義全局變量,但是不建議這樣做,因?yàn)樵诰植孔饔糜蛑卸x的全局變量很難維護(hù);

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

        JavaScript中有幾種簡(jiǎn)單數(shù)據(jù)類型(也稱為基本數(shù)據(jù)類型):Undefined、Null、Boolean、Number和String。還要一種復(fù)雜類型——Object,Object本質(zhì)是一組無(wú)序的名值對(duì)組成。JavaScript中不支持任何創(chuàng)建自定義的類型的機(jī)制,而所有值都是這6種數(shù)據(jù)類型之一。

        typeof操作符

        由于JavaScript是弱類型的,因此需要有一種手段來(lái)檢測(cè)給定變量的數(shù)據(jù)類型——typeof就是一個(gè)負(fù)責(zé)檢測(cè)給定變量的數(shù)據(jù)類型的操作符。對(duì)一個(gè)值使用typeof操作符可能返回下列某個(gè)字符串:

        • “undefined”——如果這個(gè)值未定義;

        • “boolean”——如果這個(gè)值是布爾類型;

        • “string”——如果這個(gè)值是字符串;

        • “number”——如果這個(gè)值是數(shù)字;

        • “object”——如果這個(gè)值是對(duì)象或null;

        • “function”——如果這個(gè)值是函數(shù);

        下面是使用typeof操作符的幾個(gè)例子:

        var message = "hello"; console.log(typeof message);			//"string" console.log(typeof(message));			//"string" console.log(typeof 95);					//"number"

        typeof操作符的操作數(shù)可以是變量,也可以是數(shù)值字面量。注意,typeof不是函數(shù),因此此例中的圓括號(hào)盡管可以使用,但是不是必需的。
        在JavaScript中,函數(shù)是一種對(duì)象,不是一種數(shù)據(jù)類型,因此使用typeof來(lái)區(qū)分函數(shù)和其他對(duì)象是必要的。

        Undefined類型

        undefined類型只有一個(gè)值,即特殊的undefined。在使用var聲明變量但對(duì)其未加以初始化時(shí),這個(gè)變量的值就是undefined。例如:

        var message; console.log(message  == undefined);		//true var message1 = "undefined"; console.log(message1 == undefined);			//true

        然而,令人困惑的一點(diǎn)是:對(duì)未初始化的變量執(zhí)行typeof操作符會(huì)返回undefined值,而對(duì)未聲明的比變量執(zhí)行typeof操作符同樣也會(huì)返回undefined值。來(lái)看下面的例子:

        var message;			//這個(gè)變量聲明之后默認(rèn)取得了undefined值 //下面這個(gè)變量并沒(méi)有聲明 //var age; console.log(typeof message);		//"undefined" console.log(typeof age);			//"undefined"

        為初始化的變量和為聲明的變量都返回了undefined,這個(gè)結(jié)果有其邏輯上的合理性。因?yàn)檫@兩種變量從技術(shù)角度上有本質(zhì)的區(qū)別,但實(shí)際上無(wú)論對(duì)那種變量也不可能執(zhí)行真正的操作,

        Null類型

        Null類型是第二個(gè)只有一個(gè)值得類型,這個(gè)特殊的值是null。從邏輯的角度來(lái)看,null值表示一個(gè)對(duì)象的空指針,而這也正是使用typeof操作符的檢測(cè)null值時(shí)會(huì)返回“object”的原因,如下面的例子所示:

        var message= null;		 console.log(message);		//"object"

        如果定義的對(duì)象將來(lái)用來(lái)保存對(duì)象,那么最好將這個(gè)變量初始化為null而不是其他的值。這樣一來(lái),只要直接檢查null值就可以直接知道相應(yīng)的變量是否已經(jīng)保存了一個(gè)對(duì)象的引用,如下面的例子:

        if(message != null){ 	//對(duì)message進(jìn)行一系列的操作 }

        實(shí)際上,undefined的值是派生自null值得,所以對(duì)它們進(jìn)行相等性測(cè)試的時(shí)候要返回true:

        console.log(null == undefined);		//true

        在這里,位于null和undefined之間的相等操作符(==)總是返回true。盡管null和undefined有這樣的關(guān)系,但它們的的用途完全不同。如上面所述,無(wú)論在什么情況下,都沒(méi)有必要把一個(gè)變量顯示的表示為undefined,可是同樣的規(guī)則對(duì)null卻不適用。換句話說(shuō),只有保存對(duì)象的變量還沒(méi)有真正的保存對(duì)象,就應(yīng)該在明確地表示將該變量保存為null值。這樣做不僅可以體現(xiàn)null值作為空指針的慣例,而且也有助于進(jìn)一步的區(qū)分null和undefined。

        Boolean類型

        Boolean類型是JavaScript中使用最多的一種類型,該類型只有兩個(gè)字面值:true和false。這兩個(gè)值與數(shù)字值不是一回事,因此true不一定等于1,而false也不一定等于0。以下是為變量賦值的例子:

        var first = true; var second = false;

        需要注意的是,boolean類型的兩個(gè)值區(qū)分大小寫。也就是說(shuō)True和true、False和false不是一回事。
        True和False(以及其他混合大小形式)只是標(biāo)識(shí)符,不是boolean值。
        雖然boolean值只有兩個(gè)值,但是JavaScript所有類型的值都有與這兩個(gè)boolean值等價(jià)的值。要將一個(gè)值轉(zhuǎn)換為相應(yīng)的Boolean值,可以調(diào)用Boolean()函數(shù)。例如:

        	var message = "Hello world!"; 	var messageAsBoolean = Boolean(message); 	console.log(messageAsBoolean);		//true

        可以對(duì)任何類型的值調(diào)用Boolean()函數(shù),而且總會(huì)返回一個(gè)boolean值。至于返回的是true還是false取決于要轉(zhuǎn)換的實(shí)際類型及其實(shí)際值。下表給出了各種數(shù)據(jù)類型對(duì)其轉(zhuǎn)換的相應(yīng)規(guī)則:

        數(shù)據(jù)類型 轉(zhuǎn)換為true的值 轉(zhuǎn)換為false的值
        Boolean true false
        String 任何非空字符串 “”(空字符串)
        Number 任何非零數(shù)字值(包括無(wú)窮大) 0和NaN
        Object 任何對(duì)象 null
        Undefined n/a undefined

        Number類型

        在JavaScript中number類型定義了不同的數(shù)值字面量格式。例如:

        	var  intNumber = 55;		//十進(jìn)制整數(shù) 	var octalNum1 = 070;		//八進(jìn)制的56 	var octaNum2 = 079;			//無(wú)效的八進(jìn)制數(shù),解析為79 	var octaNum3 =  08;			//無(wú)效的八進(jìn)制數(shù),解析為8 	var hexNum1 = 0xA;			//十六進(jìn)制的10 	var hexNum2 = 0x1f;			//十六進(jìn)制的31

        在進(jìn)行算術(shù)計(jì)算時(shí),所有八進(jìn)制和十六進(jìn)制表示的數(shù)值都會(huì)轉(zhuǎn)換成十進(jìn)制數(shù)值。

        NaN

        NaN即非數(shù)值,是一個(gè)特殊的數(shù)值。這個(gè)數(shù)用于表示一個(gè)本來(lái)要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況(這樣就不會(huì)拋出錯(cuò)誤了)。NaN本身有兩個(gè)特點(diǎn):
        首先,任何涉及NaN的操作(例如NaN/10)都會(huì)返回NaN,這個(gè)特點(diǎn)在多步計(jì)算中有可能導(dǎo)致問(wèn)題。
        其次,NaN與任何值都不相等,包括NaN本身。例如:

        console.log(NaN ==NaN );		//false

        String類型

        string類型用于表示零或多個(gè)Unicode字符組成的字符序列,即字符串。字符串可以由雙引號(hào)(")或單引號(hào)(’)表示,因此下面兩種寫法都是有效的:

        var firstName = "王文正"; var secondName = "王彬";

        雙引號(hào)開(kāi)頭的必須以雙引號(hào)結(jié)尾,而當(dāng)引號(hào)開(kāi)頭的必須以單引號(hào)結(jié)尾。下面這種會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤:

        var name = "王彬';		//語(yǔ)法錯(cuò)誤
        字符字面量

        String類型中包含了一些特殊字面量,也叫轉(zhuǎn)義序列,用于表示非打印字符,或者有其他的用途的字符。這些字符字面量如下表所示:

        字面量 含義
        n 換行
        t 制表
        b 退格
        r 回車
        f 進(jìn)紙
        斜杠
        單引號(hào)
        " 雙引號(hào)
        xnn 以十六進(jìn)制代碼nn表示一個(gè)字符
        unnn 以十六進(jìn)制代碼nnn表示一個(gè)Unicode字符
        字符串的特點(diǎn)

        JavaScript中的字符串是不可變的,也就是說(shuō),字符串一旦創(chuàng)建,它的值就是不可更改的。要更改某個(gè)變量中保存的字符串,首先要銷毀原來(lái)的字符串,然后用另一個(gè)包含新值得字符串填充變量,例如:

        var lang = "java"; lang = lang + "script"; console.log(lang);		//javascript

        Object類型

        JavaScript中的對(duì)象是一組數(shù)據(jù)和功能的集合。對(duì)象可以通過(guò)執(zhí)行new操作符后跟要?jiǎng)?chuàng)建的對(duì)象類型名稱來(lái)創(chuàng)建。而創(chuàng)建Object類型的實(shí)例并為其添加屬性或方法,就可以創(chuàng)建自定義對(duì)象。如下所示:

        var o = new Object(); var  o = new Object;		//有效,但是不推薦這種做法;
        Object的每個(gè)實(shí)例都具有以下下列屬性和方法:
        • constructor:保存著用于創(chuàng)建當(dāng)期那對(duì)象的函數(shù)。

        • hasOwnProperty(propertyName):用于檢查給定的屬性在當(dāng)前對(duì)象實(shí)例中(而不是實(shí)際的原型中)是否存在。

        • isPrototypeOf(object):用于檢查傳入的對(duì)象那個(gè)是否是當(dāng)前對(duì)象的原型。

        • propertyIsEnumerable(propertyName):用于檢查給定的屬性是否能夠使用for-in語(yǔ)句

        • toLocaleString():返回對(duì)象的字符串表示,該字符串與執(zhí)行環(huán)境的地區(qū)對(duì)應(yīng)

        • valueOf():返回對(duì)象的字符串、數(shù)值或布爾值表示。通常與toString()方法的返回值相同

        • toString():返回對(duì)象的字符串表示

        • 由于在JavaScript中Object是所有對(duì)象的基礎(chǔ),因此所有對(duì)象都具有這些基本的屬性和方法。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 亚洲AV无码久久精品狠狠爱浪潮 | 欧美成人精品一级高清片| 办公室久久精品| 国产精品多p对白交换绿帽| 亚洲午夜福利精品无码| 国产精品最新国产精品第十页| 午夜欧美精品久久久久久久| 精品多毛少妇人妻AV免费久久 | 麻豆aⅴ精品无码一区二区| 国产伦精品一区二区免费| 国产日韩欧美精品| 国内精品久久人妻互换| 欲帝精品福利视频导航| 无码精品人妻一区二区三区免费 | 国产99视频精品免费视频76| 国产日韩欧美精品| 国产精品欧美日韩| 99re热这里只有精品视频中文字幕| 亚洲av永久无码精品漫画| 日本欧美国产精品第一页久久| 2021国产三级精品三级在专区| 91精品国产福利在线导航| 日本一卡精品视频免费| 亚洲精品中文字幕乱码三区| 青草国产精品视频。| 久久亚洲精品无码播放| 久久精品国产一区二区 | 亚洲国产精品成人一区| 久久996热精品xxxx| 久久亚洲国产成人精品无码区| 国产精品九九久久免费视频| 亚洲精品视频在线| 99热成人精品免费久久| 国产成人亚洲精品91专区手机| 日本精品在线视频| 欧美精品手机在线播放| Aⅴ精品无码无卡在线观看| 国产精品福利区一区二区三区四区| 91精品国产91久久久久久青草| 99精品在线观看| 久久精品国产亚洲欧美|