JavaScript中的值類型詳細(xì)介紹
計(jì)算機(jī)程序的實(shí)質(zhì)很大程度上可以說(shuō)是機(jī)器對(duì)各種信息(值)的操作與讀寫。在JavaScript中,存在多種類型的值,這些值分成兩大類:Primitive(基本類型)和Object(對(duì)象)。
Primitive
JavaScript中Primitive有5種類型:
1.Number。所有的數(shù)字,無(wú)論是整數(shù)還是小數(shù),均為Number類型。
2.String。字符串類型。
3.Boolean。布爾類型,true或者false。
4.null。此類型只有null一個(gè)值。
5.undefined。此類型只有undefined一個(gè)值。
Object
除了Primitive,JavaScript中其它任何值均為Object(對(duì)象)。Object有以下幾種:
1.JSON鍵值對(duì)對(duì)象。如{“name”:”Bob”, “age”:42}。
2.數(shù)組(array)。如[1,4,5,7,9]。
3.函數(shù)(function)。如function(){return true;}。在JavaScript中函數(shù)有兩種存在形式:1. 可執(zhí)行代碼塊;2. 類(Class)的構(gòu)造器(constructor)。無(wú)論是以哪種形式存在,函數(shù)(function)始終都是對(duì)象。
JS自帶全局對(duì)象
為了方便程序編寫,JavaScript自帶一個(gè)全局對(duì)象,該全局對(duì)象擁有以下7個(gè)成員變量,其類型均為Object:
1.Math??梢酝ㄟ^(guò)調(diào)用Math對(duì)象的方法來(lái)完成一系列復(fù)雜的數(shù)學(xué)運(yùn)算。
2.Number??梢酝ㄟ^(guò)訪問(wèn)Number對(duì)象的成員變量來(lái)獲取一些特殊值。
3.Array。數(shù)組對(duì)象的構(gòu)造函數(shù)。
4.Function。函數(shù)對(duì)象的構(gòu)造函數(shù)。
5.Date。日期對(duì)象的構(gòu)造函數(shù)。
6.RegExp。正則表達(dá)式對(duì)象的構(gòu)造函數(shù)。
7.Error。錯(cuò)誤對(duì)象的構(gòu)造函數(shù)。
在進(jìn)行程序編寫時(shí),由于可以直接訪問(wèn)上述7個(gè)變量,因此也可以將它們當(dāng)作全局對(duì)象來(lái)使用。
Immutable與Mutable
Primitive與Object有一個(gè)涇渭分明的特性:所有的Primitive都是Immutable的,所有的Object都是Mutable的。以String類型為例,調(diào)用String的方法對(duì)其進(jìn)行編輯后,JavaScript會(huì)將編輯后的結(jié)果保存在一個(gè)新的String對(duì)象中,原String對(duì)象不會(huì)有任何改變:
var s = "test";
s.toUpperCase();//return a new String object "TEST"
console.log(s);//"test" -- original String s does not change
實(shí)驗(yàn)
在JavaScript中,可以通過(guò)使用typeof關(guān)鍵詞來(lái)獲取某個(gè)值的類型。
獲取數(shù)字的類型:
var n = 42;
console.log(typeof n);
程序輸出結(jié)果為number。
獲取字符串的類型:
var s = "test";
console.log(typeof s);
程序輸出結(jié)果為string。
獲取布爾值的類型:
var b = true;
console.log(typeof b);
程序輸出結(jié)果為boolean。
獲取null的類型:
var x = null;
console.log(typeof x);
程序本應(yīng)輸出null,但實(shí)際上卻輸出object。原因在于,當(dāng)對(duì)null值使用typeof操作時(shí),程序?qū)⒎祷豲bject:這是自JavaScript第一個(gè)版本以來(lái)就存在的一個(gè)bug。在ECMAScript標(biāo)準(zhǔn)的制定過(guò)程中,就是否修復(fù)這個(gè)bug存在過(guò)一些有趣的爭(zhēng)論:http://wiki.ecmascript.org/doku.php?id=harmony:typeof_null;最終結(jié)論為:修復(fù)該bug會(huì)給太多的網(wǎng)站帶來(lái)問(wèn)題,因此暫不修復(fù)。
獲取undefined的類型:
var y = undefined;
console.log(typeof y);
程序輸出結(jié)果為undefined。
獲取JSON對(duì)象的類型:
var j = {"name":"Bob", "age":42};
console.log(typeof j);
程序輸出結(jié)果為object。
獲取數(shù)組對(duì)象的類型:
var a = [2,3,5,7,11];
console.log(typeof a);
程序輸出結(jié)果為object。
獲取函數(shù)對(duì)象的類型:
var f = function(){return true;};
console.log(typeof f);
函數(shù)對(duì)象比較特殊,typeof操作符返回結(jié)果為function。
相關(guān)文章
Javascript 函數(shù)中的參數(shù)使用分析
關(guān)于JS中的函數(shù),相信大家已經(jīng)很了解了,其中有些特性呢,感覺(jué)還是值得提一提的,下面就說(shuō)說(shuō)JS中的函數(shù)吧。2010-03-03微信小程序使用wx.request請(qǐng)求服務(wù)器json數(shù)據(jù)并渲染到頁(yè)面操作示例
這篇文章主要介紹了微信小程序使用wx.request請(qǐng)求服務(wù)器json數(shù)據(jù)并渲染到頁(yè)面操作,結(jié)合實(shí)例形式分析了微信小程序使用wx.request發(fā)送網(wǎng)絡(luò)請(qǐng)求及返回結(jié)果渲染到wxml界面相關(guān)操作技巧,需要的朋友可以參考下2019-03-03javascript計(jì)算用戶打開網(wǎng)頁(yè)的停留時(shí)間
本文介紹了javascript計(jì)算用戶打開網(wǎng)頁(yè)的停留時(shí)間,大家參考使用吧2014-01-01微信小程序轉(zhuǎn)盤抽獎(jiǎng)的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了微信小程序轉(zhuǎn)盤抽獎(jiǎng)的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07Javascript仿PHP $_GET獲取URL中的參數(shù)
這篇文章主要介紹了Javascript仿PHP $_GET獲取URL中的參數(shù)代碼實(shí)例,需要的朋友可以參考下2014-05-05Javascript實(shí)現(xiàn)登錄記住用戶名和密碼功能
本文主要介紹了Javascript實(shí)現(xiàn)登錄記住用戶名和密碼功能的代碼。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03javascript適配器模式和組合模式原理與實(shí)現(xiàn)方法詳解
這篇文章主要介紹了javascript適配器模式和組合模式原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了javascript適配器模式與組合模式相關(guān)原理、功能、實(shí)現(xiàn)方法與注意事項(xiàng),需要的朋友可以參考下2023-07-07BootStrap 實(shí)現(xiàn)各種樣式的進(jìn)度條效果
這篇文章主要介紹了BootStrap 實(shí)現(xiàn)各種樣式的進(jìn)度條效果,代碼分為動(dòng)態(tài)和疊加兩種效果,需要的朋友可以參考下2016-12-12