javascript
学习JS的心路历程-参数传递方式(上)
很多人認(rèn)為JS的傳遞方式是值是Call by value,
物件及數(shù)組是Call by Reference。甚至還有人宣稱其實JS是Call by sharing,那到底是哪一個呢?
?
這兩天我們一一來分析這三種參數(shù)傳遞方式:
?
我們都以這個例子作為圖解分析:
?
var x =“Hola”;
var y = x;
Call by value
會直接把值拷貝過去
?
首先會先執(zhí)行var x =“Hola”,聲明一個變量x并初始化其值為“Hola”:
?
再來執(zhí)行var y = x,聲明一個變量y初始化其值為復(fù)制x的值,也就是“Hola”:
?
這就是Call by value的原理,很簡單對吧?
?
Call by reference
當(dāng)?shù)谝粋€變量存在一個值,而另一個變量要取其值時候,只會拿到對方的內(nèi)存位置。
?
var x =“Hola”:
?
var y = x,聲明變量y并初始化其值為x內(nèi)存位置:
?
所以我們?nèi)绻薷膟的值,會經(jīng)由0x11找到x的值并修改。
?
Call by sharing
跟call by reference非常類似,只是存放值的空間是獨立的,任何變量的值都只能擁有其內(nèi)存位置。
?
var x =“Hola”,聲明變量x并初始化其值為Hola內(nèi)存位置。
?
var y = x,聲明變量y并初始化其值為Hola內(nèi)存位置。
?
這個有點像C++中指標(biāo)的概念,變量只能存放只讀的內(nèi)存位置,要修改必須透過內(nèi)存位置找到值Hola并修改其值。
?
今天我們說了三種參數(shù)的傳遞方式,明天我們會來實作JS程序,來探討到底JS是使用哪種參數(shù)傳遞。
?
以上信息若有錯誤歡迎留言校正!
?
參考:
深入探討JavaScript中的參數(shù)傳遞:call by value還是reference?
JavaScript -參數(shù)傳遞方式(1)
C語言:超好懂的指標(biāo),初學(xué)者請進~
轉(zhuǎn)載于:https://www.cnblogs.com/lannyQ-Q/p/9907773.html
總結(jié)
以上是生活随笔為你收集整理的学习JS的心路历程-参数传递方式(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Swift]LeetCode45. 跳
- 下一篇: djanog总结