js return 陣列 JS函式中的引數形式總結

2021-10-13 16:20:51 字數 3143 閱讀 9732

函式是一段結合在一起執行特定任務的**,函式一般使用引數與外部進行互動。要編寫簡潔高效的js**,必須掌握函式引數。

在本文中,會使用一些有趣的例子來解釋 js 必須有效地處理函式引數的所有特性。

js 函式可以有任意數量的引數。咱們來定義具有0、1和2個引數的函式。

// 0 個引數function zero()  // 1 個引數function identity(param)  // 2 個引數function sum(param1, param2)  zero(); // => 0identity(1); // => 1sum(1, 2); // => 3
上面的3個函式呼叫傳入的引數個數與函式定義引數個數相同。當然傳入引數比定義引數個數少的時候, js 允許咱們這樣,不會報錯,缺少會使用 undefined 代替。

例如,咱們用乙個引數呼叫函式sum()(它有兩個引數)

function sum(param1, param2)  sum(1); // => nan
只有乙個引數呼叫該函式:sum(1)。這樣 param1的值是1,但是第二個引數param2是會用undefined初始化的。

param1 + param2的值為1 + undefined,結果為nan。

如果有必要,可以驗證引數是否是 undefined ,並提供乙個預設值。

function sum(param1, param2)  return param1 + param2;} sum(1); // => 1
當然還有更好做法,就是使用預設引數,來看看。

es6 預設引數特性允許使用預設值初始化引數。這種比上面介紹的方法更好、更簡潔。

接著使用es6預設引數特性將param2預設為0。

function sum(param1, param2 = 0)  sum(1); // => 1sum(1, undefined); // => 1
現在如果沒有傳入第二個引數,param2 就預設為 0 。

注意,如果將undefined設定為第二個引數sum(1, undefined), param2也將初始化為0。

function greet() !`;} const person = ;greet(person); // => 'hello, 前端小智!'
是應用於物件解構的引數。

當然也可以結合預設引數

function greetwithdefault( = {}) !`;} greetwithdefault(); // => 'hello, 無名氏!'
={} 預設為空物件。

可以使用組合不同型別解構的所有功能。例如,讓我們對同乙個引數使用物件和陣列解構。

function greefirstperson() !`;} const persons = [, ];greefirstperson(persons); // => 'hello, 王小智!'
的解構較為複雜,它提取陣列的第一項,然後從中物件讀取name屬性。

js 函式的另乙個很好的特性是能夠用可變引數呼叫同乙個函式。這樣可以使用 arguments 物件來獲取傳入的所有引數。

arguments物件是所有(非箭頭)函式中都可用的區域性變數。你可以使用arguments物件在函式中引用函式的引數。

例如,對函式的引數求和:

function sumargs()  let sum = 0; for (let i = 0; i < arguments.length; i++)  return sum;} sumargs(5, 6); // => 11
arguments是乙個對應於傳遞給函式的引數的類陣列物件。

有個問題是,每個函式作用域都定義了自己的arguments物件。因此,可能需要乙個額外的變數來訪問外部函式作用域arguments:

function outerfunction() ;}
有一種特殊情況:箭頭w函式中沒有arguments 。

const sumargs = () => ; // throws: "uncaught referenceerror: arguments is not defined"sumargs();
但這問題不。 可以使剩餘引數訪問箭頭函式內的所有引數。來 look look。

剩餘引數語法允許咱們將乙個不定數量的引數表示為乙個陣列

老樣子,來 see see。

function sumargs(...numbers)  sumargs(5, 6); // => 11
...numbers是乙個剩餘引數,它將成為乙個由剩餘引數組成的真陣列[5,6]。由於numbers 是乙個陣列,所以就可以使用陣列自有方法reduce(與類陣列物件的引數相反)。

如果不想在剩餘引數中收集所有引數,則可以組合常規引數剩餘引數

function multiplyandsumargs(multiplier, ...numbers)  multiplyandsumargs(2, 5, 6); // => 22
multiplier 是乙個常規引數,它獲取第乙個引數的值。然後剩下的引數...numbers 接收剩餘的引數。

剩餘引數和 arguments物件之間的區別主要有三個:

除了基本用法之外,js在處理函式引數時還提供了許多有用的特性。

當缺少引數時,可以很容易地設定預設值。

js 解構的所有功能都可以應用於引數。甚至可以將解構與預設引數結合使用。

arguments 是乙個特殊的類陣列物件,它包含函式呼叫時使用的所有引數。

作為arguments的更好替代,可以使用剩餘引數特性。它也儲存引數列表,但是,它將它們儲存到陣列中。

js return和匿名函式

今天乙個剛學js的朋友給了我一段 問為什麼方法不執行,如下 如下 function makefunc x alert makefunc 0 其實不是不執行,只是朋友的意思這裡alert出來的應該是 0 而不是function 不是指令碼寫錯了,只是沒搞懂return,從當前函式退出,並從那個函式返回...

JS 陣列函式

1 doctype html 2 html 3 head 4 title 09 陣列物件.html title 56 meta name keywords content keyword1,keyword2,keyword3 7 meta name description content this ...

js常用陣列函式

concat 方法 返回乙個新陣列,這個新陣列是由兩個或更多陣列組合而成的。array1.concat item1 item2 itemn var arr 1 yang yan fei var arr 2 10,11,2,33,44,55 var str 3 yangyanfei var arr 3...