js教程(高級4)
來源:易賢網 閱讀:866 次 日期:2014-09-09 11:10:24
溫馨提示:易賢網小編為您整理了“js教程(高級4)”,方便廣大網友查閱!

復制、傳遞和比較數據

在 JScript 中,對數據的處理取決于該數據的類型。

按值和按引用的比較

Numbers 和 Boolean 類型的值 (true 和 false) 是按值來復制、傳遞和比較的。當按值復制或傳遞時,將在計算機內存中分配一塊空間并將原值復制到其中。然后,即使更改原來的值,也不會影響所復制的值(反過來也一樣),因為這兩個值是獨立的實體。

對象、數組以及函數是按引用來復制、傳遞和比較的。 當按地址復制或傳遞時,實際是創建一個指向原始項的指針,然后就像拷貝一樣來使用該指針。如果隨后更改原始項,則將同時更改原始項和復制項(反過來也一樣)。實際上只有一個實體;“復本”并不是一個真正的復本,而只是該數據的又一個引用。

當按引用比較時,要想比較成功,兩個變量必須參照完全相同的實體。例如,兩個不同的 Array 對象即使包含相同的元素也將比較為不相等。要想比較成功,其中一個變量必須為另一個的參考。要想檢查兩個數組是否包含了相同的元素,比較 toString() 方法的結果。

最后,字符串是按引用復制和傳遞的,但是是按值來比較的。請注意,假如有兩個 String 對象(用 new String("something") 創建的),按引用比較它們,但是,如果其中一個或者兩者都是字符串值的話,按值比較它們。

注意 鑒于 ASCII和 ANSI 字符集的構造方法,按序列順序大寫字母位于小寫字母的前面。例如 "Zoo" 小于 "aardvark"。如果想執行不區分大小寫的匹配,可以對兩個字符串調用 toUpperCase() 或 toLowerCase()。

傳遞參數給函數

按值傳遞一個參數給函數就是制作該參數的一個獨立復本,即一個只存在于該函數內的復本。即使按引用傳遞對象和數組時,如果直接在函數中用新值覆蓋原先的值,在函數外并不反映新值。只有在對象的屬性或者數組的元素改變時,在函數外才可以看出。

例如(使用 IE 對象模式):

// 本代碼段破壞(覆蓋)其參數,所以

// 調用代碼中反映不出變化。

function Clobber(param)

{

// 破壞參數;在調用代碼中

// 看不到。

param = new Object();

param.message = "This will not work";

}

// 本段代碼改變參數的屬性,

// 在調用代碼中可看到屬性改變。

function Update(param)

{

// 改變對象的屬性;

// 可從調用代碼中看到改變。

param.message = "I was changed";

}

// 創建一個對象,并賦給一個屬性。

var obj = new Object();

obj.message = "This is the original";

// 調用 Clobber,并輸出 obj.message。注意,它沒有發生變化。

Clobber(obj);

window.alert(obj.message); // 仍然顯示 "This is the original"。

// 調用 Update,并輸出 obj.message。注意,它已經被改變了。

Update(obj);

window.alert(obj.message); // 顯示 "I was changed"。

檢驗數據

當按值進行檢驗時,是比較兩個截然不同的項以查看它們是否相等。通常,該比較是逐字節進行的。當按引用進行檢驗時,是看這兩項是否是指向同一個原始項的指針。如果是,則比較結果是相等;如果不是,即使它們每個字節都包含完全一樣的值,比較結果也為不相等。

按引用復制和傳遞字符串能節約內存;但是由于在字符串被創建后不能進行更改,因此可以按值進行比較。這樣可以檢查兩個字符串是否包含相同的內容,即使它們是完全獨立產生的。

更多信息請查看IT技術專欄

更多信息請查看腳本欄目
易賢網手機網站地址:js教程(高級4)
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
未满十八18勿进黄网站免费看