摘要:值傳遞的典型這是典型的值傳遞的例子,只是把它的值給了局部變量,因此他們的存儲是分開的,函數不會改變的值。看來的參數傳遞還是有點小復雜的。
預備知識 首先要明白基本類型和引用類型的區別: 基本類型:
var num1=5; var num2=num1;
基本類型存儲圖
從他們的存儲空間可知:num1和num2的存儲是獨立的,改變其中一個的值,另一個不會受到影響
引用類型:var obj1=new Object(); var obj2=obj1; obj1.name="Nicholas"; console.log(obj2.name); //Nicholas
引用類型存儲圖
從他們的存儲空間可知,改變其中一個的屬性值,另一個的屬性值也會改變。
值傳遞的典型function addTen(num){ return num+10; } var count=20; var result=addTen(count); console.log(count); //20 console.log(result); //30
這是典型的值傳遞的例子,count只是把它的值給了局部變量,因此他們的存儲是分開的,函數不會改變count的值。
傳遞引用類型也屬于值傳遞function setName(obj){ obj.name="Nicholas"; } var person=new Object(); setName(person); console.log(person.name); //Nicholas
咦?person對象的值已經改變了呀,為什么它還是值傳遞呢?
先讓我們再來看一個例子吧:
function setName(obj){ obj.name="Nicholas"; obj=new Object(); obj.name="Greg"; } var person=new Object(); setName(person); console.log(person.name); //Nicholas
如果為引用傳遞:則在第二個例子中,person把它的地址給了局部obj,局部obj擁有了另一把可以進入person操作的鑰匙,obj在第三行new的時候便會把person指向一個新的對象,person的名字將變為Greg,可是結果并非如此,所以不是引用傳遞。
person存儲在堆中,是全局的,具有唯一性,person傳值時,obj可以對他進行操作,可以理解為person給了obj鑰匙,但是門的掌控權仍在person手中,obj不能再建一個新門。
看來js的參數傳遞還是有點小復雜的。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91064.html
摘要:但牛津哲大學哲學家兼首席人工智能科學家認為,我們可以將所有的結果歸納為兩大類。認為,物種不朽與物種滅絕同樣具有吸引人的狀態,即如果我們能做到這一點,我們將永遠不受滅絕的影響我們將擁有戰勝死亡的機會。 showImg(https://segmentfault.com/img/remote/1460000019316706); 我們面臨著一個非常困難的問題,在一個未知的時間內來解決它,而人...
摘要:奔著一星期徹底弄清楚一個小知識點的目的這次的目標是方法在實際項目中經常會用到這三個函數只是簡單的知道都是用來進行上下文綁定的這三個函數都可以實現現在看來這三者還是有很大區別的特別是和其他兩個的區別先說和目的是改變函數的執行上下文下面列舉一些 奔著一星期徹底弄清楚一個javascript小知識點的目的,這次的目標是call apply bind方法 在實際項目中,經常會用到這三個函數,只...
摘要:本系列的第一篇文章著重提供一個關于引擎運行時和調用棧的概述。在硬件層面,計算機內存由大量的觸發器組成。每個觸發器包含幾個晶體管能夠存儲一個比特譯注位。可以通過唯一標識符來訪問單個觸發器,所以可以對它們進行讀寫操作。比特稱為個字節。 原文 How JavaScript works: memory management + how to handle 4 common memory lea...
摘要:所以傳遞給函數的值是這個值,所以函數執行結束原始變量并不會改變。傳值調用在傳值調用中,傳遞給函數參數是函數被調用時所傳實參的拷貝。引用類型變量的值是一個指針,指向堆內存中的實際對象。所以傳共享調用也可以說是傳值調用。 1. 例子 先來看兩個個來自于 《JavaScript 高級程序設計》P70-P71 的兩個例子。 1.1. 基本類型參數傳遞 function addTen(num) ...
閱讀 2468·2019-08-30 15:53
閱讀 2581·2019-08-29 13:11
閱讀 2668·2019-08-29 12:45
閱讀 3495·2019-08-29 12:41
閱讀 2337·2019-08-26 10:14
閱讀 2166·2019-08-23 14:39
閱讀 2319·2019-08-23 12:38
閱讀 3383·2019-08-23 12:04