Javascript学习笔记-基本概念-函数

ECMAScript 中的函数使用function 关键字来声明,后跟一组参数以及函数体。函数的基本语法如下所示:

function functionName(arg0, arg1,...,argN) {
    statements
}

 函数示例:

function sayHi(name, message) {
    alert("Hello " + name + "," + message);
}

调用sayHi()函数的代码如下所示:

sayHi("Nicholas", "how are you today?");

 

ECMAScript 中的函数在定义时不必指定是否返回值。

function sum(num1, num2) {
    return num1 + num2;
}

 调用这个函数的示例代码如下:

var result = sum(5, 10);

 这个函数会在执行完return 语句之后停止并立即退出。

1、理解参数

ECMAScript 函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。

ECMAScript 中的参数在内部是用一个数组来表示的。

函数也可以像下面这样重写,即不显式地使用命名参数:

function sayHi() {
    alert("Hello " + arguments[0] + "," + arguments[1]);
}

 命名的参数只提供便利,但不是必需的。

通过访问arguments 对象的length 属性可以获知有多少个参数传递给了函数。下面这个函数会在每次被调用时,输出传入其中的参数个数:

function howManyArgs() {
    alert(arguments.length);
}
howManyArgs("string", 45);  //2
howManyArgs();         //0
howManyArgs(12);        //1

 

函数能够接收任意个参数并分别实现适当的功能。

function doAdd() {
    if(arguments.length == 1) {
        alert(arguments[0] + 10);
    } else if (arguments.length == 2) {
        alert(arguments[0] + arguments[1]);
    }
}
doAdd(10); //20
doAdd(30, 20); //50

arguments 对象可以与命名参数一起使用。

function doAdd(num1, num2) {
    if(arguments.length == 1) {
        alert(num1 + 10);
    } else if (arguments.length == 2) {
        alert(arguments[0] + num2);
    }
}

arguments 对象的长度是由传入的参数个数决定的,不是由定义函数时的命名参数的个数决定的。

没有传递值的命名参数将自动被赋予undefined 值。

2、没有重载

ECMAScript 函数不能像传统意义上那样实现重载。ECMAScirpt函数没有签名,因为其参数是由包含零或多个值的数组来表示的。而没有函数签名,真正的重载是不可能做到的。

如果在ECMAScript 中定义了两个名字相同的函数,则该名字只属于后定义的函数。

function addSomeNumber(num){
    return num + 100;
}

function addSomeNumber(num) {
    return num + 200;
}

var result = addSomeNumber(100); //300

 

posted @ 2017-12-30 22:50  打卤  阅读(149)  评论(0编辑  收藏  举报