js函式傳參

2021-06-22 06:52:17 字數 722 閱讀 4852

要理解函式的傳參機制,首先,我們首先就要弄清楚的就是js資料型別的儲存機制和變數複製的方式,上文中:js中為什麼不能為值型別的變數動態新增屬性呢?這裡已經討論過了,這裡不再累贅,接著我們來討論下,js的變數複製

請看以下**:

在看:

從上面**的輸出結果,我們可以看出,對於基本型別來說,其複製的是被複製變數在棧中的值,即建立了乙個副本,對其中任何乙個變數的改變都不會影響另外乙個變數;對於引用型別來說,其複製的是被複製變數在棧中的值,但是這個值所儲存的是變數指向到堆中的物件的指標,即該物件所儲存的位址,複製後的變數雖然也是乙個副本,但是卻指向了與被複製的變數的同乙個在堆中的物件。對其中任何乙個變數所做的改變都會影響都會影響另外乙個變數。

現在我們來看看,函式的傳參,js中所有函式的引數都是按值來傳遞的

下面我們來看看下面這些**:

再看看下面的**:

實際上我們看到,這種傳參實際上做的就是把變數的值複製給函式內部的臨時變數(這個臨時變數其實也有乙個專門指向他們的陣列,就是我們常用於模仿過載的arguments陣列),所不同的就是對於基礎資料型別來說,他複製的就是傳人引數在棧中的值,而引用型別複製的是引數在棧中的值,而這個值儲存的是乙個指向堆中位址的指標。

在上面的黃色的**中我們建立了另外乙個物件,我們對他所做的任何的改變都不會影響帶另外乙個物件,因為它與引數所指向的物件是完成不同的物件。

js函式動態傳參

function box alert box 1,2,3,4,5,6 傳遞引數 arguments物件的length屬性可以得到引數的數量。function box alert box 1,2,3,4,5,6 我們可以利用length這個屬性,來智慧型的判斷有多少引數,然後把引數進行合理的應用。比如...

js 變數以及函式傳參

一 變數 如下 1 let num 1 2 let num1 num 3 num num 2 4 console.log num,num1 輸出 1 let obj 2 let obj1 obj 3 obj.name tom 4 console.log obj,obj1 輸出 總結 基本型別在賦值新...

JS函式傳參 作用域

一 函式傳參 引數 js資料型別 數字 字串 布林 函式 物件 未定義 fn1 100 function fn1 a 應用 重寫 1.盡量保證html 一致,可以通過父級選取元素 2.把核心朱程式實現,用函式包起來 3.把每組不通知找出來,通過傳參實現 數量正在載入中 文字說明正在載入中 數量正在載...