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

JavaScript傳參的6種方式總結

 更新時間:2023年03月27日 09:00:40   作者:愛學習的Akali?King  
js中的傳值方式,對于簡單類型(好比字符串和數值)就是值傳遞和引用傳遞,下面這篇文章主要給大家介紹了關于JavaScript傳參的6種方式,需要的朋友可以參考下

前言

JavaScript是一門非常靈活的語言,其參數傳遞方式也同樣靈活。在本篇文章中,會詳細介紹JavaScript中的參數傳遞方式,并提供相關的示例和解釋。

1. 傳遞基本類型參數

在JavaScript中,基本類型參數(比如字符串、數字、布爾值等)是通過值傳遞的。這意味著,當我們將一個基本類型的值傳遞給一個函數時,函數會獲得這個值的一個副本,而不是這個值本身。

下面是一個示例:

function updateName(name) {
  name = "John";
}

let myName = "Jane";
updateName(myName);
console.log(myName); // 輸出 "Jane"

在這個示例中,我們定義了一個函數updateName,它接受一個參數name。當我們將myName作為參數傳遞給這個函數時,函數會創(chuàng)建一個名字為name的變量的副本,并將其設置為"John"。然而,這并不會影響到myName變量的值,因為它仍然是"Jane"。這種意義上來說,這種現象也叫做淺拷貝。

2. 傳遞對象類型參數

當我們傳遞一個對象作為參數時,JavaScript會將這個對象的引用傳遞給函數。這意味著,當我們在函數中修改這個對象時,會影響到原始對象的值。

下面是一個示例:

function updatePerson(person) {
  person.name = "John";
}

let myPerson = { name: "Jane" };
updatePerson(myPerson);
console.log(myPerson.name); // 輸出 "John"

在這個示例中,我們定義了一個函數updatePerson,它接受一個參數person。當我們將myPerson作為參數傳遞給這個函數時,函數會獲得myPerson對象的引用。因此,當我們在函數中修改person對象的name屬性時,會影響到myPerson對象的值。

需要注意的是,如果我們在函數中重新分配了person參數,那么它將不再指向原始對象。例如:

function updatePerson(person) {
  person = { name: "John" };
}

let myPerson = { name: "Jane" };
updatePerson(myPerson);
console.log(myPerson.name); // 輸出 "Jane"

在這個示例中,我們在函數中重新分配了person參數,將其指向了一個新的對象。這并不會影響到myPerson對象的值,因為person參數現在指向了一個新的對象。

3. 使用解構賦值傳遞參數

在ES6中,我們可以使用解構賦值來傳遞參數。這使得我們可以輕松地從對象或數組中提取特定的值,并將其作為參數傳遞給函數。

下面是一個示例:

function printPerson({ name, age }) {
  console.log(`${name} is ${age} years old.`);
}

let myPerson = { name: "Jane", age: 25 };
printPerson(myPerson);

在這個示例中,我們定義了一個函數printPerson,它接受一個對象參數,并使用解構賦值來提取name和age屬性。當我們將myPerson作為參數傳遞給這個函數時,函數會從myPerson對象中提取name和age屬性,并將它們作為參數傳遞給函數。

需要注意的是,如果我們傳遞的對象缺少name或age屬性,那么函數將無法正常工作。因此,我們應該確保傳遞的對象具有正確的屬性。

4. 使用展開運算符傳遞參數

在ES6中,我們可以使用展開運算符(…)來傳遞參數。這使得我們可以輕松地將一個數組或對象中的所有值作為參數傳遞給函數。

下面是一個示例:

function printNames(name1, name2, name3) {
  console.log(`${name1}, ${name2}, and ${name3} are friends.`);
}

let names = ["John", "Jane", "Jim"];
printNames(...names);

在這個示例中,我們定義了一個函數printNames,它接受三個參數。當我們使用展開運算符將names數組作為參數傳遞給這個函數時,函數會將數組中的三個值分別賦值給name1、name2和name3參數。

需要注意的是,如果我們傳遞的數組中的元素數量不足三個,那么函數將無法正常工作。因此,我們應該確保傳遞的數組具有足夠的元素。

5. 使用可選參數

在JavaScript中,我們可以使用可選參數來定義一個函數,這些參數可以被省略。當我們省略一個可選參數時,它的值將為undefined。

下面是一個示例:

function sayHello(name, greeting = "Hello") {
  console.log(`${greeting}, ${name}!`);
}

sayHello("John"); // 輸出 "Hello, John!"
sayHello("Jane", "Hi"); // 輸出 "Hi, Jane!"

在這個示例中,我們定義了一個函數sayHello,它接受兩個參數:name和可選參數greeting。當我們省略greeting參數時,它的默認值為"Hello"。當我們調用sayHello函數時,可以省略greeting參數,它的值將為默認值。

需要注意的是,可選參數必須放在函數參數列表的最后面。

6. 使用剩余參數

在JavaScript中,我們可以使用剩余參數來定義一個函數,它可以接受任意數量的參數。當我們調用這個函數時,剩余參數將被收集到一個數組中。…是es6寫法

下面是一個示例:

function sum(...numbers) {
  let total = 0;
  for (let number of numbers) {
    total += number;
  }
  return total;
}

console.log(sum(1, 2, 3)); // 輸出 6
console.log(sum(4, 5, 6, 7)); // 輸出 22

在這個示例中,我們定義了一個函數sum,它使用剩余參數來接受任意數量的參數。當我們調用sum函數時,它將把所有參數收集到一個數組中,并計算它們的總和。

需要注意的是,剩余參數必須放在函數參數列表的最后面。

總結

在JavaScript中,參數傳遞是非常靈活的。我們可以傳遞基本類型參數、對象類型參數、使用解構賦值傳遞參數、使用展開運算符傳遞參數、使用可選參數和使用剩余參數。我們應該根據具體的情況來選擇適當的方式來傳遞參數。
另外,需要注意的是,當我們傳遞對象類型參數時,函數可以修改這個對象的值,這可能會對其他地方的代碼造成影響。因此,在編寫函數時,我們應該注意不要不小心修改傳遞進來的對象。如果需要修改對象的值,應該先創(chuàng)建它的副本,然后再進行修改。

到此這篇關于JavaScript傳參的6種方式的文章就介紹到這了,更多相關JS傳參方式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JavaScript實現刷新不重記的倒計時

    JavaScript實現刷新不重記的倒計時

    網上關于JavaScript實現倒計時的文章有很多,但是一般都是刷新后會重新開始計時,可是我們有的時候會需要刷新卻不重新計算的倒計時,這該怎么做呢?下面我們一起來看看這種倒計時怎么實現吧。
    2016-08-08
  • js關閉瀏覽器時退出賬號的處理

    js關閉瀏覽器時退出賬號的處理

    某些網站,尤其是涉及錢的網站,現在基本都有一個機制是兩小時后登陸自動失效,要重新登陸確認身份,那么js關閉瀏覽器時退出賬號如何實現,感興趣的可以了解一下
    2021-12-12
  • js實現延時加載Flash的方法

    js實現延時加載Flash的方法

    這篇文章主要介紹了js實現延時加載Flash的方法,較為詳細的分析了通過元素替換實現JavaScript延時加載flash的相關原理與實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • js實現5秒倒計時重新發(fā)送短信功能

    js實現5秒倒計時重新發(fā)送短信功能

    這篇文章主要為大家詳細介紹了js實現5秒倒計時重新發(fā)送短信功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • ie8 不支持new Date(2012-11-10)問題的解決方法

    ie8 不支持new Date(2012-11-10)問題的解決方法

    使用JS的時候也碰到了如下問題,后來經過修改,在IE8環(huán)境里,下面的代碼是可用的,下面與大家分享下ie8 不支持new Date的解決方法,有類似問題的朋友可以參考下
    2013-07-07
  • 淺談JavaScript作用域和閉包

    淺談JavaScript作用域和閉包

    本篇文章主要介紹了JavaScript作用域和閉包,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 快速解決js開發(fā)下拉框中blur與click沖突

    快速解決js開發(fā)下拉框中blur與click沖突

    這篇文章主要幫助大家快速解決js開發(fā)下拉框中blur與click沖突,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • js實現鼠標跟隨小游戲

    js實現鼠標跟隨小游戲

    這篇文章主要為大家詳細介紹了js實現鼠標跟隨小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • js類式繼承與原型式繼承詳解

    js類式繼承與原型式繼承詳解

    這篇文章主要為大家詳細介紹了js類式繼承與原型式繼承,感興趣的小伙伴們可以參考一下
    2016-04-04
  • javascript Deferred和遞歸次數限制實例

    javascript Deferred和遞歸次數限制實例

    你知道Deferred和遞歸次數限制嗎?如果還不知道,可以看看下面的實例,很好,適合新手朋友們
    2014-10-10

最新評論