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

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

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

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

基本類型值的傳遞

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

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ù)中使用,此時變量count和參數(shù)num的值雖然是一樣的,但是它們是兩個相互獨立的變量,在函數(shù)中改變參數(shù)num的值并不會影響函數(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ù)內(nèi)部為參數(shù)obj添加一個name屬性,函數(shù)對參數(shù)obj的使得函數(shù)外部的變量person也獲得了一個name屬性。從結(jié)果上看,JavaScript中函數(shù)的引用類型值參數(shù)的傳遞似乎是按引用傳遞的。

然而并非如此。變量person的值是引用類型值,因此它的值在變量對象中可以看做是一個實際對象在內(nèi)存中的地址(或指針)。傳遞參數(shù)以后參數(shù)obj的值是也是該對象在內(nèi)存中的地址,因此在函數(shù)中操作參數(shù)obj的值所引用的對象相當于操作變量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的值所引用的對象也會改變。改變函數(shù)的寫法或許能更加有助于理解參數(shù)的按值傳遞。

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

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

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

結(jié)論

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

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

相關(guān)文章

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

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

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

    js改變style樣式和css樣式的簡單實例

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

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

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

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

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

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

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

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

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

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

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

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

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

    JS制作簡單的三級聯(lián)動

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

    js實現(xiàn)的動畫導航菜單效果代碼

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

最新評論