JavaScript數據類型學習
ECMAscript 中有5種簡單的數據類型,也被稱為基本數據類型:Undefined、Null、Boolean、Number和String。還有一種複雜的數據類型——Object。
Undefined 類型
在使用var 聲明變量但未對其進行初始化時,這個變量的值就是undefined。如:
var number;e(number); //undefined
如果沒有聲明變量則會出現下面這種錯誤。如:
e(str); //錯誤
但是用typeof對其進行執行時,不管有沒有聲明都會返回undefined 值。如:
var num;e(typeof num); //e(typeof str); //undefined
Null 類型
使用typeof檢測null 時會返回"object"。如:
var num = null;e(typeof num); //object
實際上undefined 值是派生自null 值的,因此他們相等都會返回true。如:
ALert(null == undefined); //true
這裏要注意的是,只要意在保存對象的變量還沒有真正保存對象,就應該明確地讓該變量保存null 值,此舉有助於區分null 和 undefined。如:
var num1 = null;var num2;e(typeof num1 + " " + typeof num2); //object undefined
Boolean 類型
要將一個值轉換為其對應的Boolean 值,可以使用轉型函數Boolean()。如:
var str = "helloworld";e(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){ e("hellothere");} //hellothere
Number 類型
除了可以以十進制表示之外,整數還可以通過八進制或者十六進制的字面值來表示,其中八進制字面值的第一位必須是0,然後是八進制數字序列(0~7)。如:
var num1 = 070; //八進制的56var num2 = 032; //八進制的32var num3 = 079; //錯誤的八進制(>7)var num4 = 09; //錯誤的八進制(>7)
十六進制字面值的前兩位必須是0x,後面跟任何十六進制數(0~9 及 A~F)。如:
var num1 = 0xA; //十六進制的10var num1 = 0xa; //也是十六進制的10(字母不區分大小寫)
浮點數值
這裏要注意的是,永遠不要比較特定的浮點數值。如:
var a = 0.1;var b = 0.2;if (a + b == 0.3){ e("you are right")} //因為0.1 加上0.2 實際上等於0.30000000000000004
數值範圍
ECMAScript 能夠表示的最大和最小數值保存在_VALUE 和_VALUE 之中。要想確定一個數值是不是有窮的,可以使用isFinite()函數。如:
e(isFinite(_VALUE + _VALUE)); //false
NaN
0 除以0 會返回NaN,正數除以0 會返回Infinity,複數則會返回-Infinity。其次,NaN 與任何數值都不相等,包括它本身。另外函數isNaN()可以幫助我們確定這個參數是否“不是數值”。如:
e(isNaN("a")); //true;e(isNaN("324")); //false;e(isNaN(true)); //false;e(isNaN(false)); //false;e(isNaN(NaN)); //true;
數值轉換
有三個函數可以把非數值轉換為數值:Number()、parseInt()、parseFloat()。
Number()的轉換規則如下:
如果是Boolean 值,true 和false 會被轉換為1 和0。
如果是數字值,則不變。
如果是null 值,則轉換為0。
如果是undefined,返回NaN。
如果是字符串則遵循下列規則:
如果只有數字,則轉換為十進制數值。 如果是浮點格式,則將其轉換成對應的浮點數值。同樣也會忽略前導零。 如果是十六進制格式則會轉換成十進制數。 如果字符串是空的,則會轉換成0。 其他情況則會轉換為NaN。
具體看下面的例子:
e(Number(true)); //e(Number(false)); //e(Number("789")); //e(Number(null)); //e(Number(undefined)); //e(Number("02.0942")); //e(Number(0xa)); //e(Number("")); //e(Number("fdsa")); //NaN
parseInt()的轉換規則如下:
如果第一個字符不是數字字符或者符號,parseInt()會返回NaN。 用parseInt()轉換空字符串會返回NaN。 如果第一個字符是數字字符,它會繼續解析第二個字符,直到遇到了一個非數字字符.
下面是具體的`例子:
e(parseInt("fds")); //e(parseInt("")); //e(parseInt("1111112abc")); //e(parseInt("-1111112abc")); //e(parseInt("+1111112abc")); //e(parseInt("0xa")); //e(parseInt("0022.00009")); //e(parseInt("070")); //ECMAScript 3認為是56(八進制), ECMAScript 5認為是70(十進制)
另外需要注意的是,ECMAScript 5已經不具備解析八進制值的能力了所以為了消除這個問題,可以為這個函數提供第二個參數:轉換時使用的基數(多少進制),具體如下:
e(parseInt("070",10)); //e(parseInt("070",8)); //e(parseInt("070",16)); //112
多數情況下,最好默認設置成10進制。
parseFloat()的轉換規則如下:
與parseInt()類似,不同的是字符串第一個小數點是有效的,而從第二個小數點開始包括第二個小數點是無效的。 他不能解析十六進制數值!!! 他只能解析十進制數值!!! 他沒有用第二個基數來指定進制的用法。
下面是具體的例子:
e(parseFloat("421")); //e(parseFloat("0421.32.1")); //e(parseFloat("0xaafd")); //e(parseFloat("070")); //e(parseFloat("070abc")); //e(parseFloat("")); //e(parseFloat("abc")); //NaN
String 類型
要把一個值轉換成字符串有兩種方式。第一種是使用幾乎每個值都有的toString()方法。如下:
e((533)ring(10)); //"533"e((0xa)ring(10)); //"10"e((0xa)ring(2)); //"1010"e((true)ring(10)); //"true"e((false)ring(10)); //"false"
另外需要注意的是,null 和 undefined 不能轉換。
e((null)ring(10)); //e((undefined)ring(10)); //
如果不知道需要轉換的數值是否是null 或者undefined 則應該使用轉型函數String(),如果是null 會返回"null"如果是undefined 會返回"undefined"。如下:
e(String(null)); //"null"e(String(undefined)); //"undefined"
另外在下一篇文章中再詳細介紹Object 類型。
以上就是關於JavaScript數據類型的簡單介紹,希望對大家學習JavaScript數據類型有所幫助。
-
網頁設計的佈局
網頁設計的工作目標,是通過使用更合理的顏色、字體、圖片、樣式進行頁面設計美化,在功能限定的情況下,儘可能給予用户完美的視覺體驗。以下是小編為您帶來的網頁設計的佈局,看看吧!網頁設計的佈局11、響應式網頁設計響應式網頁設計是網頁設計的一種技術,可在N多種瀏...
-
高級PHP開發工程師崗位職責7篇
現如今,很多地方都會使用到崗位職責,崗位職責具有提高內部競爭活力,更好地發現和使用人才的作用。想學習制定崗位職責卻不知道該請教誰?以下是小編整理的高級PHP開發工程師崗位職責,僅供參考,希望能夠幫助到大家。高級PHP開發工程師崗位職責1工作職責:1、承擔機器學習...
-
PHP開發工程師的具體職責14篇
PHP開發工程師的具體職責1職責:1、對公司新的網站項目、系統項目、小程序項目進行開發;2、維護支持公司現有的網絡和系統平台工作運行;3、按時、獨立、高質量地完成工作,確保相關代碼邏輯的正確性及健壯性;4、開發、維護、升級和優化系統,並能快速定位並及時修復...
-
javascript的return語句的作用
return語句在js中非常的重要,不僅僅具有返回函數值的功能,還具有一些特殊的用法,有個清晰的把握是非常有必要的。下面就結合實例簡單介紹一下return語句的作用。用來返回控制和函數結果:通常情況,return語句對於一個函數是很有必要的`,因為往往需要函數在一系列的代...