摘要:如類型除了可以以十進(jìn)制表示之外,整數(shù)還可以通過八進(jìn)制或者十六進(jìn)制的字面值來表示,其中八進(jìn)制字面值的第一位必須是,然后是八進(jìn)制數(shù)字序列。
Javascript 數(shù)據(jù)類型
ECMAscript 中有5種簡單的數(shù)據(jù)類型,也被稱為基本數(shù)據(jù)類型:Undefined、Null、Boolean、Number和String。還有一種復(fù)雜的數(shù)據(jù)類型——Object。
Undefined 類型在使用var 聲明變量但未對其進(jìn)行初始化時,這個變量的值就是undefined。如:
var number; document.write(number); //undefined
如果沒有聲明變量則會出現(xiàn)下面這種錯誤。如:
document.write(str); //錯誤
但是用typeof對其進(jìn)行執(zhí)行時,不管有沒有聲明都會返回undefined 值。如:
var num; document.write(typeof num); //undefined document.write(typeof str); //undefinedNull 類型
使用typeof檢測null 時會返回"object"。如:
var num = null; document.write(typeof num); //object
實(shí)際上undefined 值是派生自null 值的,因此他們相等都會返回true。如:
alert(null == undefined); //true
這里要注意的是,只要意在保存對象的變量還沒有真正保存對象,就應(yīng)該明確地讓該變量保存null 值,此舉有助于區(qū)分null 和 undefined。如:
var num1 = null; var num2; document.write(typeof num1 + " " + typeof num2); //object undefinedBoolean 類型
要將一個值轉(zhuǎn)換為其對應(yīng)的Boolean 值,可以使用轉(zhuǎn)型函數(shù)Boolean()。如:
var str = "helloworld"; document.write(Boolean(str)); //true
《JavaScript高級編程設(shè)計》一書中的3.4.4中給出了關(guān)于各種數(shù)據(jù)類型及其對應(yīng)的轉(zhuǎn)換規(guī)則表格。大概有以下幾種:
數(shù)據(jù)類型為String 時,任何非空字符串都會轉(zhuǎn)換為true;
數(shù)據(jù)類型為Number 時,除了0 和NaN 會被轉(zhuǎn)換為false 之外,其他都會轉(zhuǎn)換為true;
數(shù)據(jù)類型為Object 時,除了null 之外,都會轉(zhuǎn)換為true;
數(shù)據(jù)類型為Undefined 時,n/a 會被轉(zhuǎn)換為true,undefined 會被轉(zhuǎn)換為false;
這里要注意的是,if 語句經(jīng)常使用自動執(zhí)行響應(yīng)的Boolean 轉(zhuǎn)換作為條件。如:
var str = "helloworld"; if (str){ document.write("hellothere"); } //hellothereNumber 類型
除了可以以十進(jìn)制表示之外,整數(shù)還可以通過八進(jìn)制或者十六進(jìn)制的字面值來表示,其中八進(jìn)制字面值的第一位必須是0,然后是八進(jìn)制數(shù)字序列(0~7)。如:
var num1 = 070; //八進(jìn)制的56 var num2 = 032; //八進(jìn)制的32 var num3 = 079; //錯誤的八進(jìn)制(>7) var num4 = 09; //錯誤的八進(jìn)制(>7)
十六進(jìn)制字面值的前兩位必須是0x,后面跟任何十六進(jìn)制數(shù)(0~9 及 A~F)。如:
var num1 = 0xA; //十六進(jìn)制的10 var num1 = 0xa; //也是十六進(jìn)制的10(字母不區(qū)分大小寫)浮點(diǎn)數(shù)值
這里要注意的是,永遠(yuǎn)不要比較特定的浮點(diǎn)數(shù)值。如:
var a = 0.1; var b = 0.2; if (a + b == 0.3){ document.write("you are right") } //因?yàn)?.1 加上0.2 實(shí)際上等于0.30000000000000004數(shù)值范圍
ECMAScript 能夠表示的最大和最小數(shù)值保存在Number.MAX_VALUE 和Number.MIN_VALUE 之中。要想確定一個數(shù)值是不是有窮的,可以使用isFinite()函數(shù)。如:
document.write(isFinite(Number.MAX_VALUE + Number.MAX_VALUE)); //falseNaN
0 除以0 會返回NaN,正數(shù)除以0 會返回Infinity,復(fù)數(shù)則會返回-Infinity。其次,NaN 與任何數(shù)值都不相等,包括它本身。另外函數(shù)isNaN()可以幫助我們確定這個參數(shù)是否“不是數(shù)值”。如:
document.write(isNaN("a")); //true; document.write(isNaN("324")); //false; document.write(isNaN(true)); //false; document.write(isNaN(false)); //false; document.write(isNaN(NaN)); //true;數(shù)值轉(zhuǎn)換
有三個函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:Number()、parseInt()、parseFloat()。
Number()的轉(zhuǎn)換規(guī)則如下:如果是Boolean 值,true 和false 會被轉(zhuǎn)換為1 和0。
如果是數(shù)字值,則不變。
如果是null 值,則轉(zhuǎn)換為0。
如果是undefined,返回NaN。
如果是字符串則遵循下列規(guī)則:
如果只有數(shù)字,則轉(zhuǎn)換為十進(jìn)制數(shù)值。
如果是浮點(diǎn)格式,則將其轉(zhuǎn)換成對應(yīng)的浮點(diǎn)數(shù)值。同樣也會忽略前導(dǎo)零。
如果是十六進(jìn)制格式則會轉(zhuǎn)換成十進(jìn)制數(shù)。
如果字符串是空的,則會轉(zhuǎn)換成0。
其他情況則會轉(zhuǎn)換為NaN。
具體看下面的例子:
document.write(Number(true)); //1 document.write(Number(false)); //0 document.write(Number("789")); //789 document.write(Number(null)); //0 document.write(Number(undefined)); //NaN document.write(Number("02.0942")); //2.0942 document.write(Number(0xa)); //10 document.write(Number("")); //0 document.write(Number("fdsa")); //NaNparseInt()的轉(zhuǎn)換規(guī)則如下:
如果第一個字符不是數(shù)字字符或者符號,parseInt()會返回NaN。
用parseInt()轉(zhuǎn)換空字符串會返回NaN。
如果第一個字符是數(shù)字字符,它會繼續(xù)解析第二個字符,直到遇到了一個非數(shù)字字符.
下面是具體的例子:
document.write(parseInt("fds")); //NaN document.write(parseInt("")); //NaN document.write(parseInt("1111112abc")); //1111112 document.write(parseInt("-1111112abc")); //-1111112 document.write(parseInt("+1111112abc")); //-1111112 document.write(parseInt("0xa")); //10 document.write(parseInt("0022.00009")); //22 document.write(parseInt("070")); //ECMAScript 3認(rèn)為是56(八進(jìn)制), ECMAScript 5認(rèn)為是70(十進(jìn)制)
另外需要注意的是,ECMAScript 5已經(jīng)不具備解析八進(jìn)制值的能力了所以為了消除這個問題,可以為這個函數(shù)提供第二個參數(shù):轉(zhuǎn)換時使用的基數(shù)(多少進(jìn)制),具體如下:
document.write(parseInt("070",10)); //70 document.write(parseInt("070",8)); //56 document.write(parseInt("070",16)); //112
多數(shù)情況下,最好默認(rèn)設(shè)置成10進(jìn)制。
parseFloat()的轉(zhuǎn)換規(guī)則如下:與parseInt()類似,不同的是字符串第一個小數(shù)點(diǎn)是有效的,而從第二個小數(shù)點(diǎn)開始包括第二個小數(shù)點(diǎn)是無效的。
他不能解析十六進(jìn)制數(shù)值?。?!
他只能解析十進(jìn)制數(shù)值?。?!
他沒有用第二個基數(shù)來指定進(jìn)制的用法。
下面是具體的例子:
document.write(parseFloat("421")); //421 document.write(parseFloat("0421.32.1")); //421.32 document.write(parseFloat("0xaafd")); //0 document.write(parseFloat("070")); //70 document.write(parseFloat("070abc")); //70 document.write(parseFloat("")); //NaN document.write(parseFloat("abc")); //NaNString 類型
要把一個值轉(zhuǎn)換成字符串有兩種方式。第一種是使用幾乎每個值都有的toString()方法。如下:
document.write((533).toString(10)); //"533" document.write((0xa).toString(10)); //"10" document.write((0xa).toString(2)); //"1010" document.write((true).toString(10)); //"true" document.write((false).toString(10)); //"false"
另外需要注意的是,null 和 undefined 不能轉(zhuǎn)換。
document.write((null).toString(10)); // document.write((undefined).toString(10)); //
如果不知道需要轉(zhuǎn)換的數(shù)值是否是null 或者undefined 則應(yīng)該使用轉(zhuǎn)型函數(shù)String(),如果是null 會返回"null"如果是undefined 會返回"undefined"。如下:
document.write(String(null)); //"null" document.write(String(undefined)); //"undefined"Object 類型
另外再詳細(xì)介紹Object 類型
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/86147.html
摘要:如很明顯可以看到,實(shí)際上是函數(shù)的局部變量。簡單的說就是,復(fù)制給參數(shù),在函數(shù)內(nèi)部是局部變量,無論怎么變化,都不影響的變化。 ECMAScript 變量可能包含兩種不同數(shù)據(jù)類型的值:基本類型值和引用類型值。 基本類型和引用類型的值 基本類型值(String,Number,Boolean,Null,Undefined)指的是簡單的數(shù)據(jù)段;引用類型值(保存在內(nèi)存中的對象)指的是那些可能由多個值...
摘要:函數(shù)函數(shù)的基本語法是下面是個示例另外,任何函數(shù)在任何時候都可以通過語句后跟要返回的值來實(shí)現(xiàn)返回值。如另外,可以與命名參數(shù)一起使用。如不會執(zhí)行第一個函數(shù)兩個參數(shù)相加,只執(zhí)行最后一個同名的函數(shù)第一個參數(shù)加上 函數(shù) 函數(shù)的基本語法是: function functionName(arg0,arg1,...,argN) { statements } 下面是個示例: function...
摘要:另外,以及這兩個方法,在測試了一下,并無反應(yīng)。不知是否兼容問題。下面是獲得焦點(diǎn)的時候,自動以每毫秒的速度往下滾屏 文檔模式 頁面的文檔模式是由IE8引入的,文檔模式?jīng)Q定了可以使用的CSS級別、JS中的API以及如何對待文檔類型(doctype);在IE9,提供了4中文檔模式: IE5:混雜模式; IE7:IE7標(biāo)準(zhǔn)模式渲染頁面; IE8:IE8標(biāo)準(zhǔn)模式渲染頁面,可以使用Selecto...
摘要:注意請求和響應(yīng)都不包含信息。對象的安全機(jī)制部分實(shí)現(xiàn)了的規(guī)范。請求返回后會觸發(fā)事件,響應(yīng)數(shù)據(jù)保存在屬性中。無論是同源請求還是跨域請求,對于本地資源最好使用相對,在訪問遠(yuǎn)程資源時再使用絕對。發(fā)送請求之后,服務(wù)器決定是否允許這種類型的請求。 通過XHR實(shí)現(xiàn)Ajax通信的一個主要限制,來源于跨域安全策略。在默認(rèn)情況下,Ajax只能訪問與包含它的頁面位于同一個域中的資源。但是有時也需要一些跨域的...
摘要:類型中的類型使用自,國際協(xié)調(diào)時間年月日午夜零時開始經(jīng)過的毫秒數(shù)來保存日期。類型保存的日期能夠精確到年月日之前或之后的年。和的輸出因?yàn)g覽器不同而有所差異如年月日上午方法可用比較操作符來比較日期值。 Date 類型 ECMAScript 中的Date 類型使用自UTC(Coordinated Universal Time,國際協(xié)調(diào)時間)1970 年1 月1 日午夜(零時)開始經(jīng)過的毫秒數(shù)來...
閱讀 1428·2021-09-10 10:51
閱讀 2862·2019-08-30 15:54
閱讀 3401·2019-08-29 17:11
閱讀 959·2019-08-29 16:44
閱讀 1423·2019-08-29 13:47
閱讀 1112·2019-08-29 13:47
閱讀 1514·2019-08-29 12:23
閱讀 1075·2019-08-28 18:18