午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

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

    復(fù)制、傳遞和比較數(shù)據(jù)

    在 JScript 中,對(duì)數(shù)據(jù)的處理取決于該數(shù)據(jù)的類型。

    按值和按引用的比較

    Numbers 和 Boolean 類型的值 (true 和 false) 是按值來復(fù)制、傳遞和比較的。當(dāng)按值復(fù)制或傳遞時(shí),將在計(jì)算機(jī)內(nèi)存中分配一塊空間并將原值復(fù)制到其中。然后,即使更改原來的值,也不會(huì)影響所復(fù)制的值(反過來也一樣),因?yàn)檫@兩個(gè)值是獨(dú)立的實(shí)體。

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

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

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

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

    傳遞參數(shù)給函數(shù)

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

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

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

    // 調(diào)用代碼中反映不出變化。

    function Clobber(param)

    {

    // 破壞參數(shù);在調(diào)用代碼中

    // 看不到。

    param = new Object();

    param.message = "This will not work";

    }

    // 本段代碼改變參數(shù)的屬性,

    // 在調(diào)用代碼中可看到屬性改變。

    function Update(param)

    {

    // 改變對(duì)象的屬性;

    // 可從調(diào)用代碼中看到改變。

    param.message = "I was changed";

    }

    // 創(chuàng)建一個(gè)對(duì)象,并賦給一個(gè)屬性。

    var obj = new Object();

    obj.message = "This is the original";

    // 調(diào)用 Clobber,并輸出 obj.message。注意,它沒有發(fā)生變化。

    Clobber(obj);

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

    // 調(diào)用 Update,并輸出 obj.message。注意,它已經(jīng)被改變了。

    Update(obj);

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

    檢驗(yàn)數(shù)據(jù)

    當(dāng)按值進(jìn)行檢驗(yàn)時(shí),是比較兩個(gè)截然不同的項(xiàng)以查看它們是否相等。通常,該比較是逐字節(jié)進(jìn)行的。當(dāng)按引用進(jìn)行檢驗(yàn)時(shí),是看這兩項(xiàng)是否是指向同一個(gè)原始項(xiàng)的指針。如果是,則比較結(jié)果是相等;如果不是,即使它們每個(gè)字節(jié)都包含完全一樣的值,比較結(jié)果也為不相等。

    按引用復(fù)制和傳遞字符串能節(jié)約內(nèi)存;但是由于在字符串被創(chuàng)建后不能進(jìn)行更改,因此可以按值進(jìn)行比較。這樣可以檢查兩個(gè)字符串是否包含相同的內(nèi)容,即使它們是完全獨(dú)立產(chǎn)生的。

    更多信息請查看IT技術(shù)專欄

    更多信息請查看腳本欄目
    易賢網(wǎng)手機(jī)網(wǎng)站地址:js教程(高級(jí)4)
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2025國考·省考課程試聽報(bào)名

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)