(二)ECMASCript基礎(2)--數值類型和引用類型

Primitive and Reference Values
primitive values are simple pieces of data that are stored on the stack,which is to say that their
value is tored directly in the location that the variable accesses.
Reference values,on the other hand,are objects that are stored in the heap,meaning that the value
stored in the variable location is a pointer to a location in memory where the object is stored.
基礎值(類型)和引用值(類型)。
基礎類型存儲於棧區(stack)
引用類型存儲於堆區(heap),而對於他的調用,是通過存儲在棧中的指針來完成的。
原始類型有五種:Number、String、Boolean、Null和Undefined。
引用類型都繼承自Object,包括array、regexp、date等等。

typeof 操作符,返回傳入變量的類型。
undefined   傳入值爲未定義類型。
boolean        傳入值爲Boolean類型。
number        傳入值爲Number類型。
String        傳入值爲String類型。
object         傳入值爲一個引用類型或Null類型。
function     參數爲函數。

然後是一些關於定義變量但是未初始化的情況,typeof 返回undefined。
如果一個函數,沒有返回值的情況,則其typeof 也爲undefined。
比如:function fnAlertInfo(){}   對於此函數,typeof fnAlertInfo 爲function
      function fnAlertInfo(){return ;} 對於此函數, typeof fnAlertInfo() 爲undefined
      function fnAlertInfo(){return "" ;}  對於此函數,typeof fnAlertInfo() 爲string
要注意其中的不同點,第一個的返回值與fnAlertInfo函數的函數體沒有關係,他返回的是函數。一般用於判斷函數是否存在。
後兩者的返回是根據函數的返回值來進行判斷。
一般情況下還都沒怎麼用到過,最近在工作中,還真是出現了一個需要用的地方,情況是我們的頁面是由decorators組合的,
分爲上中下三部分,上部爲菜單欄,菜單欄中要動態修改中間部分的一個狀態位。但是中間的那部分可以是任意頁面,有的
頁面中是不需要更改的,因此加入瞭如下判斷if(typeof(getStatus)=="function"){getStatus();}這樣就可以避免錯誤了。
在沒看這個文檔前也寫出了程序,以前也用過些,不過沒有系統的瞭解。在這裏mark一下。


Null類型
    alert(null == undefined)  return true.
Number類型
    var iNum=55;
    如果是8進制  var iNum =070;首字母以0開頭。
    如果是16進制 var iNum=0x1f;以0x開頭。
String類型
數值型轉換爲String類型。可以加入2進制,8進制,16進制。如果不特殊說明,爲10進制。
var iNum = 10; iNum.toString(2);iNum.toString(8);iNum.toString(16);
轉換爲數值類型。
parseInt("1232.5")爲1232 因爲.對於一個整數來說是不合法的。
parseInt("10",2);parseInt("10",8);parseInt("10",16);parseInt("10",10);都是合法的。後一個參數標示其進位基數。
parseFloat不區分進制,均爲10進制。parseFloat("0xa");返回一個NaN。其不是別16進制。
類型轉換,這裏就是對Boolean(value),Number(value),String(value)的應用。沒有什麼特別需要注意的。跳過了。


引用類型:
var oTemp = new Object();
var oBooleanObject = new Boolean(true);
var oNumberObject = new Number(55);
var oStringObject = new String("aa");這些都屬於應用類型。
在這裏主要是介紹他們的一些函數運用。
oNumberObject.toFixed(2) 返回一個以定點表示法表示的數字的字符串形式。該字符串中小數點之前有一位有效數字,而且其後必須包含 fractionDigits 數字。
                           如果沒有 fractionDigits 參數,或者該參數爲 undefined,toFixed 方法假定該值爲 0。
                         fractionDigits可選項。小數點後的數字位數。其值必須在 0 – 20 之間,包括 0 和 20。
var oNumberTemp = new Number(111.511);
oNumberTemp.toFixed(1) 爲111.5
oNumberTemp.toFixed(4) 爲111.5110

oNumberObject.toExponential 返回一個字符串,其中包含一個以指數記數法表示的數字。
                            numObj.toExponential([fractionDigits])
oNumberTemp.toExponential(1) 爲  1.1e+2
oNumberTemp.toExponential(2) 爲  1.12e+2
oNumberTemp.toExponential(3) 爲  1.115e+2 四捨五入。

StringObject
length,charAt,charCodeAt(),concat,indexOf,lastIndexOf,subString,slice等等。

delete 用於刪除開發者定義的對象屬性。而不能刪除那些ECMASCript定義的屬性。
var oTemp = new Object();o.name="Nicholas";
alert(o.name);        //輸出"Nicholas"
delete(o.name);
alert(o.name);        //輸出"undefined"

delete(o.toString()); //錯誤。

                         
void 該操作符返回undefined。爲了避免輸出一些不需要輸出的值。
<a href="javascript:window.open('about:blank');">Click Me</a>
<a href="javascript:void(window.open('about:blank'));">Click Me2</a>






primitive:['primitiv]原來的;基本的;原始的;遠古的;早期的
reference:['refərəns]提及;涉及;關係,關聯
explicitly:[ik'splisitli]明白地;明確地
unique:[ju:'ni:k]無可匹敵的,無與倫比的[Z];唯一的,獨一無二的;獨特的
represent:[,repri'zent]描繪,(抽象地)表現;
literal:['litərəl]照字面的;原義的
digit:['didʒit] 數字

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章