Javascript中的變量的特性

js中的數據類型分爲兩類:原始類型和對象類型。原始類型包括數字、字符串和布爾值。其中有兩個特殊的原始值:null和undefined。它們分別代表了各自特殊 類型的唯一的成員。另外複合類型是指對象,它是屬性的集合。包括普通對象、數組、函數、RegExp以及Error。
一、原始類型
1、數字
在js中不區分整數值和浮點數值。所有的數字均用浮點數值表示。在數值表示法中,可分爲整型直接量和浮點型直接量,雖然某些js實現中可以允許採用八進制形式表示整數,但在某些實現中並不支持。因此最好不要以0爲前綴的整型直接量。數字的運算包括“+”、“-”、“*”、“/”、“%”,而運算的結果可能會存在溢出(超過js所能表示的數字上限)、下溢(是當運算結果無限接近於零並比js能表示的最小值還小,這種情況下,js將會返回0,當一個負數發生下溢時,將返回一個特殊的“負零”)。另外,需要注意的是,在二進制的浮點數表示法並不能精確類似0.1這樣簡單的數字。所以js(包括幾乎所有現代編程語言),並不能精確表示0.1這樣的小數,看下面這段代碼:
var x = 0.3 - 0.2;
var y = 0.2 - 0.1;
x == y //false:兩個值不相等!
2、字符串
字符串是一組由16位值組成的不可變的有序序列,每個字符通常來自於Unicode字符集。要注意的是js中並沒有表示單個字符的“字符型”。
在ES3中,字符串直接必須寫在一行中,而在ES5中,字符串直接量可以拆分爲數行,但每行必須以反斜線(\)結束。還有就是當使用單引號來定界字符串時,需要格外小心英文中的縮寫和所有格寫法,比如can’t和O’Reilly’s。因爲撇號和單引號是同一個字符,所以必須使用反斜線(\ )轉義。因此這就涉及到了字符轉義的方法。在js中有兩個方法是通用的,即通過十六進制數表示Latin-1或Unicode中的任意字碼。例如,\xA9表示版權符號,同樣,\u表示由4個十六進制數指定的任意Unicode字符,比如,\u03c0表示字符。
js中的轉義字符
轉義字符 含義
\o null
\b 退格
\t 水平製表
\v 垂直製表
\f 分頁
\r 換行
\’ 單引號
\” 雙引號
\xXX 兩位十六進制表示的Latin-1字符
\uXXXX 四位十六進制表示的Unicode字符
\ 反斜線
如果\出現在除以上所列的字符前,則忽略,當然字符串還有很多實用的API,具體可以參考一下《關於數組與字符串的使用》博文。
3、布爾值
布爾值指代真或假、開或關、是或關。這個類型只有兩個值,保留字true和false。其中任意js的值都可以轉換爲布爾值。下面這些值會被轉換爲false:
4、null和undefined
null是js中的關鍵字,它表示一個特殊值,常用來描述“空值”。對null執行typeof預算結果返回字符串”object”,也就是說,可以將null認爲是一個特殊的對象值,含義是“非對象”。還有第二個值即undefinded來表示值的空缺。用未定義的值表示更深層次的“空值”。它是變量的一種取值,表明變量沒有初始化,如果要查詢對象屬性或數組元素的值 時返回undefined則說明這個屬性或元素不存在。如果函數沒有返回任何值,則返回undefined。引用沒有提供實參的函數形參的值也只會得到undefined。一般認爲undefined是系統級的、出乎意料的或類似錯誤的值的空缺,而null是表示程序級的、正常的或在意料之中的值的空缺。如果想將它們賦值給變量或者屬性,或將將它們作爲參數傳入函數,最佳選擇是使用null。
5、對象
本文要闡述的是全局對象和包裝對象。全局對象在js中有着重要的用途:全局對象的屬性是全局定義的符號,js程序可以直接使用。當js解釋器啓動時(或任何Web瀏覽器加載頁面的時候),它將創建一個新的全局對象,並給它定義一組初始屬性:
全局屬性:undefined、Infinity、和NaN
全局函數:isNaN()、parseInt()、eval()
構造函數:Date()、RegExp()、String()、Object()、Array()
全局對象:Math和JSON
不在任何函數內的js代碼可以使用js關鍵字this來引用全局對象:var global = this;
另外就是包裝對象,它其實就是一種臨時對象,在使用完後就被銷燬了。具體可以通過String()、Number()、Boolean()構造函數顯示創建。也可以通過給字符串、數字、布爾的原始類型創建一個新屬性來創建包裝對象。注意下面代碼產生的誤區。
var s = ‘test’;
s.len = 4;
var t = s.len ;//查詢這個屬性,t的值是undefined。第二行代碼創建一個臨時字符對象,並給其len屬性賦值爲4,隨即銷燬這個對象。第三行通過原始的字符串值創建一個新字符對象,嘗試讀取其len屬性,這個屬性自然不存在,表達式求值結果爲undefined.

發佈了45 篇原創文章 · 獲贊 7 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章