欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

JavaScript使用一個(gè)變量對(duì)象來追蹤變量的生存期?;绢愋椭当恢苯颖4嬖谧兞繉?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ì)改變,還是指向原來的對(duì)象。

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

結(jié)論

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

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

相關(guān)文章

  • js實(shí)現(xiàn)鼠標(biāo)滾輪控制圖片縮放效果的方法

    js實(shí)現(xiàn)鼠標(biāo)滾輪控制圖片縮放效果的方法

    這篇文章主要介紹了js實(shí)現(xiàn)鼠標(biāo)滾輪控制圖片縮放效果的方法,涉及onmousewheel事件及javascript操作圖片的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • js改變style樣式和css樣式的簡單實(shí)例

    js改變style樣式和css樣式的簡單實(shí)例

    下面小編就為大家?guī)硪黄猨s改變style樣式和css樣式的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • 在JavaScript中驗(yàn)證URL的新方法(2023版)

    在JavaScript中驗(yàn)證URL的新方法(2023版)

    在JavaScript領(lǐng)域,URL 驗(yàn)證方面有了新消息!多年來,人們一直在討論JavaScript沒有一種簡便的方法來驗(yàn)證 URL,現(xiàn)在有了一種新方法URL.canParse(),需要的朋友可以參考下
    2023-09-09
  • layui(1.0.9)文件上傳upload,前后端的實(shí)例代碼

    layui(1.0.9)文件上傳upload,前后端的實(shí)例代碼

    今天小編就為大家分享一篇layui(1.0.9)文件上傳upload,前后端的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • autojs 螞蟻森林能量自動(dòng)拾取即給指定好友澆水的實(shí)現(xiàn)方法

    autojs 螞蟻森林能量自動(dòng)拾取即給指定好友澆水的實(shí)現(xiàn)方法

    這篇文章主要介紹了autojs 螞蟻森林能量自動(dòng)拾取即給指定好友澆水的實(shí)現(xiàn)方法,本文通過圖文并茂實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • ES6中Array.copyWithin()函數(shù)的用法實(shí)例詳解

    ES6中Array.copyWithin()函數(shù)的用法實(shí)例詳解

    ES6為Array增加了copyWithin函數(shù),用于操作當(dāng)前數(shù)組自身,用來把某些個(gè)位置的元素復(fù)制并覆蓋到其他位置上去。下面重點(diǎn)給大家介紹ES6中Array.copyWithin()函數(shù)的用法,需要的朋友參考下
    2017-09-09
  • js實(shí)現(xiàn)class樣式的修改、添加及刪除的方法

    js實(shí)現(xiàn)class樣式的修改、添加及刪除的方法

    這篇文章主要介紹了js實(shí)現(xiàn)class樣式的修改、添加及刪除的方法,主要通過修改標(biāo)簽的className來實(shí)現(xiàn)這一功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-01-01
  • 微信瀏覽器左上角返回按鈕監(jiān)聽的實(shí)現(xiàn)

    微信瀏覽器左上角返回按鈕監(jiān)聽的實(shí)現(xiàn)

    這篇文章主要介紹了微信瀏覽器左上角返回按鈕監(jiān)聽的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • JS制作簡單的三級(jí)聯(lián)動(dòng)

    JS制作簡單的三級(jí)聯(lián)動(dòng)

    本文給大家分享的是使用javascript實(shí)現(xiàn)的一個(gè)簡單的三級(jí)聯(lián)動(dòng)菜單,非常簡單實(shí)用,有需要的小伙伴過來參考下吧。
    2015-03-03
  • js實(shí)現(xiàn)的動(dòng)畫導(dǎo)航菜單效果代碼

    js實(shí)現(xiàn)的動(dòng)畫導(dǎo)航菜單效果代碼

    這篇文章主要介紹了js實(shí)現(xiàn)的動(dòng)畫導(dǎo)航菜單效果代碼,涉及JavaScript通過鼠標(biāo)事件控制頁面元素樣式動(dòng)態(tài)變換的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09

最新評(píng)論