99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

函數(shù)(Functions)

2018-06-15 18:40 更新

定義函數(shù)的一種方法是通過(guò)函數(shù)聲明:

function add(param1, param2) {
    return param1 + param2;
}

上面的代碼定義一個(gè)名稱(chēng)叫做add的函數(shù),有兩個(gè)參數(shù)param1和param2,并且返回參數(shù)的和。下面是如何調(diào)用這個(gè)函數(shù):

> add(6, 1)
  7
> add('a', 'b')
  'ab'

另一種定義add()函數(shù)的方法是通過(guò)函數(shù)表達(dá)式:

var add = function (param1, param2) {
    return param1 + param2;
};

函數(shù)表達(dá)式產(chǎn)生一個(gè)值,因此可以直接將函數(shù)作為參數(shù)傳遞給其他函數(shù):

someOtherFunction(function (p1, p2) { ... });

函數(shù)聲明提升(Function declarations are hoisted)

函數(shù)聲明會(huì)被提升,他們?nèi)灰苿?dòng)到當(dāng)前作用域開(kāi)始之處。這允許你在函數(shù)聲明之前調(diào)用它們:

function foo() {
    bar();  // 沒(méi)問(wèn)題,bar被提升
    function bar() {
        ...
    }
}

注意:雖然變量聲明也會(huì)被提升,但賦值的過(guò)程不會(huì)被提升:

function foo() {
    bar();  // 有問(wèn)題,bar是undefined
    var bar = function () {
        // ...
    };
}

特殊變量arguments(The special variable arguments)

在JavaScript中你可以調(diào)用任意函數(shù)并傳遞任意數(shù)量的參數(shù)——語(yǔ)言絕不會(huì)抱怨(參數(shù)檢測(cè))。都可以正常工作,然而,使所有參數(shù)可訪問(wèn)需要通過(guò)特殊變量 arguments。arguments 看起來(lái)像數(shù)組,但它沒(méi)有數(shù)組的方法(稱(chēng)為類(lèi)數(shù)組 array-like)。

> function f() { return arguments }
> var args = f('a', 'b', 'c');
> args.length
3
> args[0]  // 獲取索引為0的元素
'a'

太多或太少參數(shù)(Too many or too few arguments)

讓我們通過(guò)下面的函數(shù)探索JavaScript中傳遞太多或太少參數(shù)時(shí)如何處理(函數(shù) toArray在后面提到

function f(x, y) {
    console.log(x, y);
    console.log(toArray(arguments));
}

多出的參數(shù)將被忽略(可以通過(guò)arguments訪問(wèn)):

> f('a', 'b', 'c')
a b
[ 'a', 'b', 'c' ]

缺少的參數(shù)將會(huì)是undefined:

> f('a')
a undefined
[ 'a' ]
> f()
undefined undefined
[]

可選參數(shù)(Optional parameters)

下面是一個(gè)常見(jiàn)模式,給參數(shù)設(shè)置默認(rèn)值:

function pair(x, y) {
    x = x || 0;  // (*)
    y = y || 0;
    return [ x, y ];
}

在(*)這行,如果x是真值(除了:nullundefined 等),操作符返回x。否則,它返回第二個(gè)操作數(shù)。

> pair()
[ 0, 0 ]
> pair(3)
[ 3, 0 ]
> pair(3, 5)
[ 3, 5 ] 

強(qiáng)制數(shù)量(Enforcing an arity)

如果你想強(qiáng)制參數(shù)的數(shù)量,你可以檢測(cè)arguments.length:

function pair(x, y) {
    if (arguments.length !== 2) {
        throw new Error('Need exactly 2 arguments');
    }
    ...
}

將arguments 轉(zhuǎn)換為數(shù)組(Converting arguments to an array)

arguments 不是一個(gè)數(shù)組,它僅僅是類(lèi)數(shù)組(array-like):它有一個(gè)length屬性,并且你可以通過(guò)方括號(hào)索引方式訪問(wèn)它的元素。然而,你不能移除元素,或在它上面調(diào)用任何數(shù)組方法。因此,有時(shí)你需要將其轉(zhuǎn)換為數(shù)組。這就是下面函數(shù)的作用。

function toArray(arrayLikeObject) {
    return [].slice.call(arrayLikeObject);
}

深入閱讀

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)