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

輕松學習JavaScript函數(shù)中的 Rest 參數(shù)

 更新時間:2019年05月30日 15:20:49   作者:小峰  
ES6 引入 rest 參數(shù)用于獲取函數(shù)的多余參數(shù),這樣就不需要使用arguments對象了。rest 參數(shù)搭配的變量是一個數(shù)組,該變量將多余的參數(shù)放入數(shù)組中。下面我們來詳細了解一下吧

JavaScript函數(shù)可以使用任意數(shù)量的參數(shù)。與其他語言(如C#和Java)不同,你可以在調(diào)用JavaScript函數(shù)時傳遞任意數(shù)量的參數(shù)。JavaScript函數(shù)允許未知數(shù)量的函數(shù)參數(shù)。在ECMAScript 6之前,JavaScript有一個變量來訪問這些未知或可變數(shù)目的參數(shù),這是一個類似數(shù)組的對象,并非一個數(shù)組。細想以下代碼來理解arguments變量:

function add(){
var result = 0; 
for(let i=0;i<arguments.length;i++){
result = result + arguments[i];
}
return result; 
}
var r = add(6,9,3,2);
console.log(r);
var t = add(7,56,9);
console.log(t);

如你所見,arguments對象用于訪問未知或可變的函數(shù)參數(shù)。即使arguments使用length屬性和方括號,它也不是一個真正的JavaScript數(shù)組。你不能對arguments對象使用其他JavaScript數(shù)組方法,如pop,push,slice等。在使用arguments時存在的一些問題是:

JavaScript函數(shù)arguments對象不是一個真正的JavaScript數(shù)組;因此,你不能使用其他數(shù)組方法,如pop,push,slice等。
在內(nèi)部函數(shù)中訪問外部函數(shù)的arguments對象是很困難的。要訪問的話,你需要在變量中分配外部函數(shù)的arguments函數(shù),然后在內(nèi)部函數(shù)中使用它。

如果你想要使用arguments對象作為數(shù)組,那么你需要通過Aarry.prototype.slice手動轉換。
ECMAScript 6引入了一個新功能,Rest參數(shù),它表示一個未知數(shù)量的參數(shù)作為函數(shù)中的一個數(shù)組。它不僅將額外的參數(shù)表示為數(shù)組,還解決了arguments對象的許多問題。使用rest參數(shù)重寫上面的add函數(shù)。

function add(...theArgs){
var result = 0; 
for(let i=0;i<theArgs.length;i++){
result = result + theArgs[i];
}
return result; 
}
var r = add(6,9,3,2);
console.log(r);
var t = add(7,56,9);
console.log(t);

你可以將rest參數(shù)定義為…theArgs或… args。如果最后命名的函數(shù)參數(shù)以…(三個點)作為前綴,那么它將成為函數(shù)的rest參數(shù)。JavaScript函數(shù)的rest參數(shù)是純JavaScript數(shù)組。在上面的代碼中,…theArgs是函數(shù)add的rest參數(shù),因為它是唯一的命名參數(shù),且也以…(三個點)作為前綴。

由于rest參數(shù)是JavaScript數(shù)組,所以你可以對rest參數(shù)theArgs執(zhí)行諸如push,pop等操作,如下面的代碼所示:

function add(...theArgs){
theArgs.push(10);
var result = 0; 
for(let i=0;i<theArgs.length;i++){
result = result + theArgs[i];
}
var lastItem = theArgs.pop();
console.log(lastItem);
return result; 
}

JavaScript函數(shù)的rest參數(shù)也可以與其他參數(shù)一起工作。如果你不想在rest參數(shù)數(shù)組中包含特定參數(shù)的話,那么你可能需要在函數(shù)中使用其他命名參數(shù)。細想以下代碼塊:

function add(num1, num2, ...theArgs){
console.log(num1);
console.log(num2);
console.log(theArgs.length);
}
var r = add(6,9,3,2);
var t = add(7,56,9);

對于第一次函數(shù)調(diào)用,6和9將分別分配給num1和num2。對于第二個函數(shù)調(diào)用,7和56將被分配給num1和num2。啟動第三個參數(shù)的參數(shù)將被分配給rest參數(shù)數(shù)組。請記住,前兩個參數(shù)不會成為rest參數(shù)數(shù)組的一部分。所以,如果你打算將所有的值都包含在rest參數(shù)中,那么你應該一開始就將它們定義為用逗號分隔的命名參數(shù)。下面給出的代碼將會導致錯誤:

function add(num1, ...theArgs,num2){
console.log(num1);
console.log(num2);
console.log(theArgs.length);
}

在上面的代碼中,rest參數(shù)不是最后一個參數(shù),所以JavaScript會拋出錯誤。rest參數(shù)必須是最后一個正式參數(shù)。

JavaScript允許你破壞rest參數(shù),這意味著你可以將rest變量數(shù)據(jù)解包為不同的變量名稱。請看下面的代碼:

function add(...[a,b,c]){
return a+b+c; 
}
var r = add(6);
console.log(r);
var t = add(7,56,9);
console.log(t);

第一次函數(shù)調(diào)用,將分配a = 6,b = undefined,c = undefined,第二次函數(shù)調(diào)用,將分配a = 7,b = 56,c = 9。在此例子中,函數(shù)將忽略傳遞的任何額外的參數(shù)。

JavaScript函數(shù)的rest參數(shù)是對arguments對象使用函數(shù)未知參數(shù)的一個巨大改進。它是一個純JavaScript數(shù)組;因此,你可以對它使用所有數(shù)組方法。你可以將rest變量數(shù)據(jù)解包到命名變量中。你可以給rest參數(shù)指定任何名稱,這又是一個使用arguments關鍵字的重大改進。

英文原文:Easy JavaScript Part 2: What Is the Rest Parameter in a Function?

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • JavaScript CSS修改學習第六章 拖拽

    JavaScript CSS修改學習第六章 拖拽

    這是一個簡單可用的拖拽代碼。用鼠標和鍵盤都可以操作。
    2010-02-02
  • 對xmlHttp對象方法和屬性的理解

    對xmlHttp對象方法和屬性的理解

    客戶端可以通過xmlHttp對象(MSXML2.XMLHTTP.3.0)向http服務器發(fā)送請求并使用文檔對象模型(DOM)處理回應。
    2011-01-01
  • javascript 秒表計時器實現(xiàn)代碼

    javascript 秒表計時器實現(xiàn)代碼

    這篇文章主要介紹了javascript 秒表計時器實現(xiàn)代碼的相關資料,需要的朋友可以參考下
    2017-03-03
  • 簡單介紹JavaScript中字符串創(chuàng)建的基本方法

    簡單介紹JavaScript中字符串創(chuàng)建的基本方法

    這篇文章主要介紹了簡單介紹JavaScript中字符串創(chuàng)建的基本方法,是JS入門學習中的基礎知識,需要的朋友可以參考下
    2015-07-07
  • W3C Group的JavaScript1.8 新特性介紹

    W3C Group的JavaScript1.8 新特性介紹

    在了解了JavaScript1.7的相關更新后,我們再繼續(xù)關注JavaScript1.8的新特性。在W3C Group帶來的JavaScript系列特性文章中,JavaScript1.8的更新相對較少!
    2009-05-05
  • 詳解JavaScript中的every()方法

    詳解JavaScript中的every()方法

    這篇文章主要介紹了JavaScript中的every()方法,是JS入門學習中的基礎知識,需要的朋友可以參考下
    2015-06-06
  • JavaScript中的操作符類型轉換示例總結

    JavaScript中的操作符類型轉換示例總結

    最近發(fā)現(xiàn)在前端的面試題目中經(jīng)常出現(xiàn)操作符類型轉換的題目,于是這里來進行一個JavaScript中的操作符類型轉換示例總結,需要的朋友可以參考下
    2016-05-05
  • 詳解JavaScript中的變量命名規(guī)范

    詳解JavaScript中的變量命名規(guī)范

    程序員三大難題:變量命名、緩存失效、循環(huán)邊界。這篇文章主要為大家介紹了JavaScript中的變量命名規(guī)范,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-12-12
  • setInterval()和setTimeout()的用法和區(qū)別示例介紹

    setInterval()和setTimeout()的用法和區(qū)別示例介紹

    setInterval()和setTimeout()想必大家并不陌生吧,接觸js的朋友都知道的,不過還是有一些新手朋友對兩者的用法不是很熟悉,下面簡要的為大家介紹下
    2013-11-11
  • JavaScript 學習初步 入門教程

    JavaScript 學習初步 入門教程

    看了《21天學習JavaScript》的視頻教程,感覺就是語法好熟悉,和C++類似,和C#類似,和Java類似!幡然悔悟這些語言的語法都是類似的,數(shù)據(jù)類型,對象方法(或者稱之為函數(shù),由于我是個菜鳥所以也數(shù)不清楚到底是什么)。
    2010-03-03

最新評論

赤壁市| 贵州省| 磴口县| 泾川县| 虹口区| 敦化市| 巩义市| 丹阳市| 正镶白旗| 兴化市| 瓦房店市| 合肥市| 灌云县| 屏东县| 会同县| 福鼎市| 阳山县| 梅州市| 金门县| 信丰县| 紫阳县| 墨脱县| 仙游县| 榆社县| 那曲县| 东宁县| 车险| 错那县| 安仁县| 台东市| 临海市| 玉门市| 新绛县| 乐清市| 团风县| 吉隆县| 合作市| 广德县| 炉霍县| 永平县| 泾阳县|