函數(shù)的定義和調(diào)用


函數(shù)的定義

第一種:

function abs(x){
    if (x >= 0) {
        return x;
    } else {
        return -x;
    }
}

由于JavaScript的函數(shù)也是一個(gè)對(duì)象,上述定義的abs()函數(shù)實(shí)際上是一個(gè)函數(shù)對(duì)象,而函數(shù)名abs可以視為指向該函數(shù)的變量。所以有了第二種定義方式。

第二種:

var abs=function(x){
    if (x >= 0) {
        return x;
    } else {
        return -x;
    }
}; //按照完整語法需要在函數(shù)體末尾加一個(gè);,表示賦值語句結(jié)束。

這種方式下,該函數(shù)是一個(gè)匿名函數(shù),但是賦值給了變量abs,因此可以通過變量abs來調(diào)用該函數(shù)。

函數(shù)的調(diào)用

調(diào)用時(shí),按順序傳入?yún)?shù)即可。
由于JavaScript允許傳入任意個(gè)參數(shù)而不影響調(diào)用,因此傳入的參數(shù)比定義的參數(shù)多也沒有問題,雖然函數(shù)內(nèi)部并不需要這些參數(shù):
傳入的參數(shù)少哪?

abs()//此時(shí)abs(x)函數(shù)的參數(shù)x將收到undefined,計(jì)算結(jié)果為NaN。

要避免收到undefined,可以對(duì)參數(shù)進(jìn)行檢查:

function abs(x) {
    if (typeof x !== 'number') {
        throw 'Not a number';
    }
    if (x >= 0) {
        return x;
    } else {
        return -x;
    }
}

arguments

關(guān)鍵字arguments的作用域是 函數(shù)內(nèi)部,永遠(yuǎn)指向傳入函數(shù)的參數(shù)。arguments類似于Array但不是Array
使用方法:

function abs(){
    if(arguments.length == 0){
        return 0;
    }
    var temp = arguments[0];
    return temp >= 0 ? temp:-temp;
}
abs();//返回0;
abs(9);//返回9;
abs(-9);//返回9;

應(yīng)用場(chǎng)景:常用于判斷傳入?yún)?shù)的個(gè)數(shù)。

//foo(a, [b], c)
//接受2-3個(gè)參數(shù),其中第二個(gè)參數(shù) b 是可選參數(shù);
function foo(a, b, c){
    if(arguments.length === 2){
    //實(shí)際拿到的參數(shù)是a和b,c是undefined;
        c = b;//將b的值賦給c;
        b = null;//把b變成默認(rèn)值;
    }
    ...//函數(shù)的具體實(shí)現(xiàn);
}
//要想把中間的可選參數(shù)b變成默認(rèn)值,只能通過`arguments`進(jìn)行轉(zhuǎn)換;

rest

rest參數(shù)有ES6標(biāo)準(zhǔn)引入。作用是獲取除了已定義的參數(shù)之外的所有參數(shù)。

使用方法:

function foo(a, b, ...rest){
    console.log('a = ' + a);
    console.log('b = ' + b);
    console.log(rest);
}
foo(1, 2, 3, 4, 5);
//a = 1, b = 2, c = Array[3, 4, 5];
foo(1);
//a = 1, b = undefined, Array[];

rest要寫在所有參數(shù)的最后,前面加上三個(gè)點(diǎn)...,前兩個(gè)參數(shù)綁定到a,b上,其余所有的參數(shù)以數(shù)組的形式,傳給變量rest。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 定義函數(shù): function指出這是一個(gè)函數(shù)定義; abs是函數(shù)名稱; (x)括號(hào)內(nèi)列出函數(shù)的參數(shù),多個(gè)參數(shù)以,隔...
    mr_young_閱讀 337評(píng)論 0 1
  • 函數(shù)的定義和調(diào)用 arguments arguments,它只在函數(shù)內(nèi)部起作用,并且永遠(yuǎn)指向當(dāng)前函數(shù)的調(diào)用者傳入的...
    子尐小太爺閱讀 416評(píng)論 0 2
  • 函數(shù)函數(shù)定義與調(diào)用變量作用域全局變量方法高階函數(shù)閉包箭頭函數(shù)$generator$ 函數(shù) 函數(shù)定義與調(diào)用 定義函數(shù)...
    染微言閱讀 689評(píng)論 0 5
  • 作者:葛冰 貢獻(xiàn)者:白羽毛_4695,艾尚伊芙 目 錄一、神奇的攝像機(jī)(1)二、淡藍(lán)色的影子(6)三、在銅像的陰影...
    bigtrace閱讀 9,980評(píng)論 8 38
  • 獨(dú)逛超市,才發(fā)現(xiàn),六神并不能喝 不知從何時(shí)起,每每經(jīng)過網(wǎng)球場(chǎng),都要側(cè)頭看一下,因?yàn)槎嗔艘唤z牽絆 看到路過的學(xué)生,氣...
    我不是注銷了嗎閱讀 280評(píng)論 2 0

友情鏈接更多精彩內(nèi)容