js基础之函数

定义
JavaScript 函数是被设计为执行特定任务的代码块。会在某代码调用它时被执行。

实例

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

函数赋值给变量
js的函数本质也是一个对象,因此可以赋值给变量。

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

function (x) { … }是一个匿名函数,它没有函数名。但是,这个匿名函数赋值给了变量abs,所以,通过变量abs就可以调用该函数。这种方式和直接命名函数是等价的。

不加()调用函数

不加()使用函数,返回的是函数对象的声明。

<p id="demo"></p>

<script>
function toCelsius(f) {
    return (5/9) * (f-32);
}
document.getElementById("demo").innerHTML = toCelsius;
</script>

上边代码返回:

function toCelsius(f) { return (5/9) * (f-32); } //<p id="demo"></p>的内容

函数调用

函数调用的时候,传入任意个参数并不会影响调用,因此传入的参数比定义的参数多也没有问题。如果参数传的少。未传的参数默认为undefined
单数js有个关键字arguments,可以获取传递的参数。它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。arguments类似Array但它不是一个Array:

function foo(x) {
    console.log('x = ' + x); // 10
    for (var i=0; i<arguments.length; i++) {
        console.log('arg ' + i + ' = ' + arguments[i]); // 10, 20, 30
    }
}
foo(10, 20, 30);

不传参数也可以获取到值, 我们经常用它判断入参的个数:

function abs() {
    if (arguments.length === 0) {
        return 0;
    }
    var x = arguments[0];
    return x >= 0 ? x : -x;
}

abs(); // 0
abs(10); // 10
abs(-9); // 9

我们用rest参数表示剩余的参数。rest参数只能写在最后,前面用…标识

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
// Array [ 3, 4, 5 ]

foo(1);
// 结果:
// a = 1
// b = undefined
// Array []
上一篇:L2-028 秀恩爱分得快 (25 分)


下一篇:Python基础语法快速复习-函数