基本型別和引用型別作為引數傳遞(重要)

2021-08-30 19:41:39 字數 635 閱讀 6112

基本型別和引用型別作為引數傳遞

引用型別資料和基本型別資料作為引數傳遞有沒有差別呢?我們用如下**進行說明,並配合**讓大家更加清晰

1.基本資料型別傳遞

基本型別作為引數傳遞時,其實就是將基本型別變數x空間中的值複製了乙份傳遞給呼叫的方法show(),當在show()方法中x接受到了複製的值,再在show()方法中對x變數進行操作,這時只會影響到show中的x。當show方法執行完成,彈棧後,程式又回到main方法執行,main方法中的x值還是原來的值。

2.引用資料型別傳遞

當引用變數作為引數傳遞時,這時其實是將引用變數空間中的記憶體位址(引用)複製了乙份傳遞給了show方法的d引用變數。這時會有兩個引用同時指向堆中的同乙個物件。

當執行show方法中的d.x=6時,會根據d所持有的引用找到堆中的物件,並將其x屬性的值改為6.show方法彈棧。

由於是兩個引用指向同乙個物件,不管是哪乙個引用改變了引用的所指向的物件的中的值,其他引用再次使用都是改變後的值。

基本型別和引用型別作為引數傳遞

引用型別資料和基本型別資料作為引數傳遞有沒有差別呢?我們用如下 進行說明,並配合 讓大家更加清晰 基本型別作為引數傳遞時,其實就是將基本型別變數x空間中的值複製了乙份傳遞給呼叫的方法show 當在show 方法中x接受到了複製的值,再在show 方法中對x變數進行操作,這時只會影響到show中的x。...

js 基本型別和引用型別 變數複製 引數傳遞

ecmascript 變數可能包含兩種不同資料型別的值 基本型別值和引用型別值 基本型別值指的是 簡單的資料段 undefined null boolean number 和 string 這 5 種基本資料型別是按值訪問 的,因為可以操作儲存在變數中的實際的值。而引用型別值指那些可能由多個值構成的...

js 函式 引數傳遞 引用型別與基本型別

1.js函式不介意傳遞進來多少個引數,也不在乎傳遞進來引數是什麼型別。2.arguments物件 類陣列 arguments物件的長度是由傳入的引數個數決定的,不是由定義函式時的引數 命名引數 個數決定的。沒有傳遞值的命名引數自動被賦予undefined值。用var操作符定義的變數將成為作用域中的區...