我覺着我可能對這塊有點誤解,因此單獨開個博說下本身的理解,固然是研究後的正解了。javascript
1,參數傳遞是基本類型,看個例子:java
function addTen(num){ num += 10; return num; } var count = 20; var result = addTen(count); console.log(count,result); //20 30
感受這個都沒啥好說的,基本類型傳入函數後,函數內部參數生成一個參數副本,按值傳入沒毛病。函數
2,引用類型(一個對象)看成參數傳入函數後呢?spa
function setName(obj){ obj.name = 'miya'; } var person = new Object(); setName(person); console.log(person.name) //miya
在這個例子裏面,obj和person指向的是同一個對象,當obj上面添加name屬性時候,外面的person也有所反應。那這就說明:參數是按引用傳遞進來的?不是的呦,它傳遞進來的數據實際上是person的內存地址,因此說是按值傳遞的。由於修改了同一個內存,因此外面的person也變了。不信看下面的例子:code
function setName(obj){ obj.name = 'miya'; obj = new Object(); obj.name = 'jone' } var person = new Object(); setName(person); console.log(person.name); //miya
惟一區別是在函數內部給obj對象從新賦值了一個對象,首先person的內存地址傳遞進來後,添加name屬性,然後obj從新指向另一個新對象,給新對象添加屬性。因此如今obj引用的是另一個局部對象了。person的name值仍然是miya。對象
因此這裏的「按值傳遞」的,引用類型傳遞進來傳遞的是它的內存數據(值)。blog
能夠把javascript的函數的參數想象成局部變量。ip
【完】內存
溫故而知新,能夠爲師矣。io