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

2021-09-18 02:28:07 字數 1044 閱讀 9671

1.js函式不介意傳遞進來多少個引數,也不在乎傳遞進來引數是什麼型別。

2.arguments物件:類陣列

arguments物件的長度是由傳入的引數個數決定的,不是由定義函式時的引數(命名引數)個數決定的。

沒有傳遞值的命名引數自動被賦予undefined值。

用var操作符定義的變數將成為作用域中的區域性變數。就是說函式中 使用var定義乙個變數,這個變數在函式退出後就會被銷毀。

基本型別:儲存在棧(stack)中的簡單資料段,也就是說,它們的值直接儲存在變數訪問的位置。

引用型別:儲存在堆中的物件,也就是說,儲存在變數處的值是乙個指標,指向堆中的物件。

所有函式的引數都是按值傳遞的。

來看書裡兩個經典的例子:

function setname(obj)

var person = new object();

setname(person);

alert(person.name); // 返回 xiaoxiaozi

在呼叫函式setname()時,person 被複製給了 obj 。因此在函式內部 obj 與 person 引用的是同乙個物件,或者說是對同乙個物件的引用。所以在給 obj 引用物件加上 name 屬性時,person 引用的物件也有了 name 屬性,因為雖然 obj 與 person 不同,但是二者引用的物件是同乙個。

function setname(obj)

var person = new object();

setname(person);

alert(person.name); // 結果依舊是 xiaoxiaozi

在呼叫 setname() 函式初時,obj 與 person 引用的是同一物件,所以首次的 name 屬性賦值會對 person 有所影響。但是當 obj 被重新定義時,其引用的物件已經與 person 不同,所以後面設定的 name 屬性,不會對 person 引用的物件有任何影響。

值傳遞與引用傳遞 引數型別

根據儲存方式不同,我們將資料型別分為值型別和引用型別。值型別 基本資料型別 int float double boolean long 列舉 結構。儲存在棧當中的,提取資料快,但是分配空間多,耗資源,建議資料量少的情況下使用。引用型別 object型別 類 陣列 介面 值傳遞 1 直接傳遞值型別 結...

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

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

JS基礎 引用型別的引數傳遞

ecmascript中所有函式的引數都是按值傳遞的。可以把ecmascript函式的引數想象成區域性變數。ecmascript中所有函式的引數都是按值傳遞的。也就是說,函式的傳參,就和基本型別變數的複製一樣,而引用型別值的傳遞,則如同引用型別變數的複製一樣。這裡可能會使很多人感到困惑,因為訪問變數有...