最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
JavaScript函數(shù)參數(shù)的傳遞方式有哪些

這篇文章主要介紹了JavaScript函數(shù)參數(shù)的傳遞方式有哪些,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站設(shè)計(jì),高端網(wǎng)頁(yè)制作,對(duì)三輪攪拌車等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專業(yè)成都網(wǎng)站推廣優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。

JavaScript使用一個(gè)變量對(duì)象來(lái)追蹤變量的生存期。基本類型值被直接保存在變量對(duì)象內(nèi);而引用類型值則作為一個(gè)指針保存在變量對(duì)象內(nèi),該指針指向?qū)嶋H對(duì)象在內(nèi)存中的存儲(chǔ)位置。

基本類型值的傳遞

向參數(shù)傳遞基本類型值時(shí),被傳遞的值會(huì)被復(fù)制給一個(gè)局部變量(即命名參數(shù),或者是arguments對(duì)象中的一個(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ù)對(duì)參數(shù)obj的使得函數(shù)外部的變量person也獲得了一個(gè)name屬性。從結(jié)果上看,JavaScript中函數(shù)的引用類型值參數(shù)的傳遞似乎是按引用傳遞的。

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

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的值所引用的對(duì)象,那么相對(duì)應(yīng)的變量person的值所引用的對(duì)象也會(huì)改變。改變函數(shù)的寫法或許能更加有助于理解參數(shù)的按值傳遞。

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

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

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

結(jié)論

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

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“JavaScript函數(shù)參數(shù)的傳遞方式有哪些”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


分享題目:JavaScript函數(shù)參數(shù)的傳遞方式有哪些
URL標(biāo)題:http://fisionsoft.com.cn/article/ggjceg.html