javascript複雜型別如何傳參

funnyok發表於2021-09-11

javascript複雜型別如何傳參

說明

1、在將實參傳遞給形參的過程中,複雜的資料型別傳遞給形參的是實參的地址,而非物件例項。

2、函式的形參也可以看作是一個變數。

當我們將引用型別的變數傳遞給形參時,我們實際上將變數儲存在棧空間中的堆地址複製給形參。形參和實參實際上儲存在同一個堆地址,所以操作的是同一個物件。

例項

    <script>
        function Person(name) {
            this.name = name;
        }
 
        function fun1(x) {
            // 8.由於形參 x 指向 地址p,因此輸出的仍然是 地址p 所對應的物件例項{new Person('劉德華'); name = '劉德華'}
            // 9.第二個輸出:'劉德華'
            console.log(x.name);
            // 10.對 x.name 進行了重新的賦值,此時的物件例項改為{new Person('劉德華'); name = '張學友'}
            x.name = '張學友';
            // 11.第三個輸出:'張學友'
            console.log('2' + x.name);
        }
        // 1.定義一個複雜資料型別
        // 2.複雜資料型別 變數 p 在棧中儲存 地址p,變數 p 指向 地址p
        // 3.而真正的物件例項{new Person('劉德華'); name = '劉德華'}存放在堆中
        // 4.變數 p 指向棧中的地址p,地址p 指向堆中的物件例項{new Person('劉德華'); name = '劉德華'}
        var p = new Person('劉德華');
        // 5.第一個輸出:劉德華
        console.log(p.name);
        // 6.將變數 p 傳遞給形參 x,即將 地址p 傳遞給形參 x
        // 7.然後變數 p 和形參 x 都指向了同一個地址,即 地址p
        fun1(p);
        // 12.此時 p.name 的物件例項為{new Person('劉德華'); name = '張學友'}
        // 13.第四個輸出:'張學友'
        console.log(p.name);
    </script>

以上就是javascript複雜型別的傳參方法,希望對大家有所幫助。更多Javascript學習指路:

推薦操作環境:windows7系統、jquery3.2.1版本,DELL G3電腦。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3137/viewspace-2828847/,如需轉載,請註明出處,否則將追究法律責任。

相關文章