官术网_书友最值得收藏!

What is a Function?

Functions allow you group together some code, give this code a name, and reuse it later, addressing it by name. Let's see an example:

function sum(a, b) {
    var c = a + b;
    return c;
}

What are the parts that make up a function?

  • The function statement.
  • The name of the function, in this case sum.
  • Expected parameters (arguments), in this case a and b. A function can accept zero or more arguments, separated by commas.
  • A code block, also called the body of the function.
  • The return statement. A function always returns a value. If it doesn't return value explicitly, it implicitly returns the value undefined.

Note that a function can only return a single value. If you need to return more values, then simply return an array that contains all of the values as elements of this array.

Calling a Function

In order to make use of a function, you need to call it. You call a function simply by using its name followed by any parameters in parentheses. "To invoke" a function is another way of saying "to call".

Let's call the function sum(), passing two parameters and assigning the value that the function returns to the variable result:

>>> var result = sum(1, 2);
>>> result;

3

Parameters

When defining a function, you can specify what parameters the function expects to receive when it is called. A function may not require any parameters, but if it does and you forget to pass them, JavaScript will assign the value undefined to the ones you skipped. In the next example, the function call returns NaN because it tries to sum 1 and undefined:

>>> sum(1)

NaN

JavaScript is not picky at all when it comes to parameters. If you pass more parameters than the function expects, the extra parameters will be silently ignored:

>>> sum(1, 2, 3, 4, 5)

3

What's more, you can create functions that are flexible about the number of parameters they accept. This is possible thanks to the arguments array that is created automatically inside each function. Here's a function that simply returns whatever parameters are passed to it:

>>> function args() { return arguments; }
>>> args();

[]

>>> args( 1, 2, 3, 4, true, 'ninja');

[1, 2, 3, 4, true, "ninja"]

By using the arguments array you can improve the sum() function to accept any number of parameters and add them all up.

function sumOnSteroids() { 
  var i, res = 0; 
  var number_of_params = arguments.length;
  for (i = 0; i < number_of_params; i++) {
    res += arguments[i];
  }
  return res; 
} 

If you test this function by calling it with a different number of parameters (or even no parameters at all), you can verify that it works as expected:

>>> sumOnSteroids(1, 1, 1);

3

>>> sumOnSteroids(1, 2, 3, 4);

10

>>> sumOnSteroids(1, 2, 3, 4, 4, 3, 2, 1);

20

>>> sumOnSteroids(5);

5

>>> sumOnSteroids();

0

The expression arguments.length returns the number of parameters passed when the function was called. Don't worry if the syntax is unfamiliar, we'll examine it in detail in the next chapter. We'll also see that arguments is technically not an array, but an array-like object.

主站蜘蛛池模板: 大港区| 肃北| 方山县| 建宁县| 新疆| 苏尼特左旗| 乐昌市| 延寿县| 苍梧县| 抚松县| 东阿县| 双峰县| 积石山| 承德市| 盘锦市| 微山县| 伊宁市| 宁国市| 修武县| 油尖旺区| 高要市| 慈溪市| 德兴市| 根河市| 同心县| 太仆寺旗| 东明县| 磐安县| 土默特右旗| 宜春市| 灌阳县| 绥宁县| 莒南县| 乌什县| 金塔县| 伊川县| 凌云县| 建阳市| 阿荣旗| 弥渡县| 铜梁县|