最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript函數(shù)參數(shù)的傳遞方式詳解

 更新時(shí)間:2017年03月06日 14:14:44   作者:rickkky  
本文主要介紹了JavaScript函數(shù)參數(shù)的傳遞方式,具有很好的參考價(jià)值。下面跟著小編一起來看下吧

JavaScript使用一個(gè)變量對象來追蹤變量的生存期?;绢愋椭当恢苯颖4嬖谧兞繉ο髢?nèi);而引用類型值則作為一個(gè)指針保存在變量對象內(nèi),該指針指向?qū)嶋H對象在內(nèi)存中的存儲(chǔ)位置。

基本類型值的傳遞

向參數(shù)傳遞基本類型值時(shí),被傳遞的值會(huì)被復(fù)制給一個(gè)局部變量(即命名參數(shù),或者是arguments對象中的一個(gè)元素)。

function addOne (num) {
 num++;
 return num;
}
var count = 1;
var result = addOne(count);
console.log(count); //1
console.log(result); //2

在上面的例子中,變量count的值被傳遞給函數(shù)的參數(shù)num以便在函數(shù)中使用,此時(shí)變量count和參數(shù)num的值雖然是一樣的,但是它們是兩個(gè)相互獨(dú)立的變量,在函數(shù)中改變參數(shù)num的值并不會(huì)影響函數(shù)外部的變量count的值。

因此JavaScript中函數(shù)的基本類型值參數(shù)的傳遞是按值傳遞的。

引用類型值的傳遞

function setName (obj) {
 obj.name = 'Nicholas';
}
var person = new Object();
setName(person);
console.log(person.name); //'Nicholas'

在上面的例子中,變量person的值被傳遞給函數(shù)的參數(shù)obj,此時(shí)在函數(shù)內(nèi)部為參數(shù)obj添加一個(gè)name屬性,函數(shù)對參數(shù)obj的使得函數(shù)外部的變量person也獲得了一個(gè)name屬性。從結(jié)果上看,JavaScript中函數(shù)的引用類型值參數(shù)的傳遞似乎是按引用傳遞的。

然而并非如此。變量person的值是引用類型值,因此它的值在變量對象中可以看做是一個(gè)實(shí)際對象在內(nèi)存中的地址(或指針)。傳遞參數(shù)以后參數(shù)obj的值是也是該對象在內(nèi)存中的地址,因此在函數(shù)中操作參數(shù)obj的值所引用的對象相當(dāng)于操作變量person的值所引用的對象。

function setName (obj) {
 obj.name = 'Nicholas';
 obj = new Object();
 obj.name = 'Greg';
 return obj;
}
var person = new Object();
var result = setName(person);
console.log(person.name); //'Nicholas'
console.log(result.name); //'Greg'

如果參數(shù)傳遞是按引用傳遞的,在上面的例子中,函數(shù)改變了參數(shù)obj的值所引用的對象,那么相對應(yīng)的變量person的值所引用的對象也會(huì)改變。改變函數(shù)的寫法或許能更加有助于理解參數(shù)的按值傳遞。

function setName () {
 var obj = arguments[0];
 obj.name = 'Nicholas';
 obj = new Object();
 obj.name = 'Greg';
 return obj;
}

雖然變量person和參數(shù)obj的值一樣都是同一個(gè)對象在內(nèi)存中的地址,但它們是兩個(gè)相互獨(dú)立的變量。如果在函數(shù)中改變參數(shù)obj的值,使其指向內(nèi)存中另外一個(gè)對象,變量person的值不會(huì)改變,還是指向原來的對象。

因此JavaScript中函數(shù)的引用類型值參數(shù)的傳遞是按值傳遞的。

結(jié)論

JavaScript中所有函數(shù)的參數(shù)都是按值傳遞的。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

最新評論

仁布县| 靖边县| 泗洪县| 白银市| 鸡西市| 定襄县| 丰镇市| 墨竹工卡县| 仙游县| 宁海县| 方城县| 安泽县| 屏边| 积石山| 邢台县| 海兴县| 余干县| 大姚县| 裕民县| 格尔木市| 通山县| 湘潭市| 沿河| 连南| 喀喇| 集安市| 祁东县| 温泉县| 万年县| 商河县| 大埔区| 丰都县| 方山县| 马边| 梁山县| 屯留县| 阿坝县| 莎车县| 新乐市| 静宁县| 连州市|