国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript數據類型的一些注意要點

Tonny / 696人閱讀

摘要:如類型除了可以以十進制表示之外,整數還可以通過八進制或者十六進制的字面值來表示,其中八進制字面值的第一位必須是,然后是八進制數字序列。

Javascript 數據類型

ECMAscript 中有5種簡單的數據類型,也被稱為基本數據類型:Undefined、Null、Boolean、Number和String。還有一種復雜的數據類型——Object。

Undefined 類型

在使用var 聲明變量但未對其進行初始化時,這個變量的值就是undefined。如:

var number;
document.write(number); //undefined

如果沒有聲明變量則會出現下面這種錯誤。如:

document.write(str); //錯誤

但是用typeof對其進行執行時,不管有沒有聲明都會返回undefined 值。如:

var num;
document.write(typeof num); //undefined
document.write(typeof str); //undefined
Null 類型

使用typeof檢測null 時會返回"object"。如:

var num = null;
document.write(typeof num); //object

實際上undefined 值是派生自null 值的,因此他們相等都會返回true。如:

alert(null == undefined); //true

這里要注意的是,只要意在保存對象的變量還沒有真正保存對象,就應該明確地讓該變量保存null 值,此舉有助于區分null 和 undefined。如:

var num1 = null;
var num2;
document.write(typeof num1 + " " + typeof num2); //object undefined
Boolean 類型

要將一個值轉換為其對應的Boolean 值,可以使用轉型函數Boolean()。如:

var str = "helloworld";
document.write(Boolean(str)); //true

《JavaScript高級編程設計》一書中的3.4.4中給出了關于各種數據類型及其對應的轉換規則表格。大概有以下幾種:

數據類型為String 時,任何非空字符串都會轉換為true;

數據類型為Number 時,除了0 和NaN 會被轉換為false 之外,其他都會轉換為true;

數據類型為Object 時,除了null 之外,都會轉換為true;

數據類型為Undefined 時,n/a 會被轉換為true,undefined 會被轉換為false;

這里要注意的是,if 語句經常使用自動執行響應的Boolean 轉換作為條件。如:

var str = "helloworld";
if (str){
    document.write("hellothere");
} //hellothere
Number 類型

除了可以以十進制表示之外,整數還可以通過八進制或者十六進制的字面值來表示,其中八進制字面值的第一位必須是0,然后是八進制數字序列(0~7)。如:

var num1 = 070; //八進制的56
var num2 = 032; //八進制的32
var num3 = 079; //錯誤的八進制(>7)
var num4 = 09; //錯誤的八進制(>7)

十六進制字面值的前兩位必須是0x,后面跟任何十六進制數(0~9 及 A~F)。如:

var num1 = 0xA; //十六進制的10
var num1 = 0xa; //也是十六進制的10(字母不區分大小寫)
浮點數值

這里要注意的是,永遠不要比較特定的浮點數值。如:

var a = 0.1;
var b = 0.2;
if (a + b == 0.3){
    document.write("you are right")
} //因為0.1 加上0.2 實際上等于0.30000000000000004
數值范圍

ECMAScript 能夠表示的最大和最小數值保存在Number.MAX_VALUENumber.MIN_VALUE 之中。要想確定一個數值是不是有窮的,可以使用isFinite()函數。如:

document.write(isFinite(Number.MAX_VALUE + Number.MAX_VALUE)); //false
NaN

0 除以0 會返回NaN,正數除以0 會返回Infinity,復數則會返回-Infinity。其次,NaN 與任何數值都不相等,包括它本身。另外函數isNaN()可以幫助我們確定這個參數是否“不是數值”。如:

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;
數值轉換

有三個函數可以把非數值轉換為數值:Number()parseInt()、parseFloat()。

Number()的轉換規則如下:

如果是Boolean 值,true 和false 會被轉換為1 和0。

如果是數字值,則不變。

如果是null 值,則轉換為0。

如果是undefined,返回NaN。

如果是字符串則遵循下列規則:

如果只有數字,則轉換為十進制數值。

如果是浮點格式,則將其轉換成對應的浮點數值。同樣也會忽略前導零。

如果是十六進制格式則會轉換成十進制數。

如果字符串是空的,則會轉換成0。

其他情況則會轉換為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")); //NaN
parseInt()的轉換規則如下:

如果第一個字符不是數字字符或者符號,parseInt()會返回NaN。

parseInt()轉換空字符串會返回NaN。

如果第一個字符是數字字符,它會繼續解析第二個字符,直到遇到了一個非數字字符.

下面是具體的例子:

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認為是56(八進制), ECMAScript 5認為是70(十進制)

另外需要注意的是,ECMAScript 5已經不具備解析八進制值的能力了所以為了消除這個問題,可以為這個函數提供第二個參數:轉換時使用的基數(多少進制),具體如下:

document.write(parseInt("070",10)); //70
document.write(parseInt("070",8)); //56
document.write(parseInt("070",16)); //112

多數情況下,最好默認設置成10進制。

parseFloat()的轉換規則如下:

parseInt()類似,不同的是字符串第一個小數點是有效的,而從第二個小數點開始包括第二個小數點是無效的。

他不能解析十六進制數值!??!

他只能解析十進制數值?。?!

他沒有用第二個基數來指定進制的用法。

下面是具體的例子:

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")); //NaN
String 類型

要把一個值轉換成字符串有兩種方式。第一種是使用幾乎每個值都有的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 不能轉換。

document.write((null).toString(10)); //
document.write((undefined).toString(10)); //

如果不知道需要轉換的數值是否是null 或者undefined 則應該使用轉型函數String(),如果是null 會返回"null"如果是undefined 會返回"undefined"。如下:

document.write(String(null)); //"null"
document.write(String(undefined)); //"undefined"
Object 類型

另外再詳細介紹Object 類型

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/86147.html

相關文章

  • Javascript變量注意要點

    摘要:如很明顯可以看到,實際上是函數的局部變量。簡單的說就是,復制給參數,在函數內部是局部變量,無論怎么變化,都不影響的變化。 ECMAScript 變量可能包含兩種不同數據類型的值:基本類型值和引用類型值。 基本類型和引用類型的值 基本類型值(String,Number,Boolean,Null,Undefined)指的是簡單的數據段;引用類型值(保存在內存中的對象)指的是那些可能由多個值...

    booster 評論0 收藏0
  • JavaScript函數一些注意要點

    摘要:函數函數的基本語法是下面是個示例另外,任何函數在任何時候都可以通過語句后跟要返回的值來實現返回值。如另外,可以與命名參數一起使用。如不會執行第一個函數兩個參數相加,只執行最后一個同名的函數第一個參數加上 函數 函數的基本語法是: function functionName(arg0,arg1,...,argN) { statements } 下面是個示例: function...

    caiyongji 評論0 收藏0
  • JavaScript DOM擴展——“專有擴展”注意要點

    摘要:另外,以及這兩個方法,在測試了一下,并無反應。不知是否兼容問題。下面是獲得焦點的時候,自動以每毫秒的速度往下滾屏 文檔模式 頁面的文檔模式是由IE8引入的,文檔模式決定了可以使用的CSS級別、JS中的API以及如何對待文檔類型(doctype);在IE9,提供了4中文檔模式: IE5:混雜模式; IE7:IE7標準模式渲染頁面; IE8:IE8標準模式渲染頁面,可以使用Selecto...

    wudengzan 評論0 收藏0
  • JavaScript Ajax與Comet——“跨源資源共享”注意要點

    摘要:注意請求和響應都不包含信息。對象的安全機制部分實現了的規范。請求返回后會觸發事件,響應數據保存在屬性中。無論是同源請求還是跨域請求,對于本地資源最好使用相對,在訪問遠程資源時再使用絕對。發送請求之后,服務器決定是否允許這種類型的請求。 通過XHR實現Ajax通信的一個主要限制,來源于跨域安全策略。在默認情況下,Ajax只能訪問與包含它的頁面位于同一個域中的資源。但是有時也需要一些跨域的...

    haobowd 評論0 收藏0
  • JavaScript引用類型——“Date類型注意要點

    摘要:類型中的類型使用自,國際協調時間年月日午夜零時開始經過的毫秒數來保存日期。類型保存的日期能夠精確到年月日之前或之后的年。和的輸出因瀏覽器不同而有所差異如年月日上午方法可用比較操作符來比較日期值。 Date 類型 ECMAScript 中的Date 類型使用自UTC(Coordinated Universal Time,國際協調時間)1970 年1 月1 日午夜(零時)開始經過的毫秒數來...

    brianway 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<