zltzlt 发表于 2020-1-17 11:00:28

JS 自定义函数

JS 自定义函数

函数就是一组 JavaScript 代码。实用函数可以是代码更为简洁,提高重(chong)用性。如果你断具有特定功能的程序代码需要在程序中多次使用,就可以先把它定义成函数,然后在需要这个功能的地方调用它。

函数的定义和调用

函数的定义可以使用 function 语句。其语法格式如下:

function 函数名 (参数列表) {
    函数体
}

例如:

// 定义一个不带参数的函数 go
function go() {
    console.log("Hello");
}

go(); // 调用 go 函数,将输出 "Hello"

// 定义一个有两个参数的函数 add
function add(a, b) {
    console.log(a + b);
}

add(3, 5); // 输出 8 (3 + 5)

// 定义一个有返回值的函数 mul
function mul(a, b) {
    return a * b;
}

var a = mul(3, 5); // a 等于 15 (3 * 5)
console.log(a);

注意:当实参个数小于函数定义的形参个数,JS 会自动减多余的参数值设置为 undefined。

如果实参个数大于函数定义的形参个数,那么多余的实参将被忽略。

例如:

function test(a, b) {
    console.log(a);
    console.log(b);
}

test(3); // 没有指定形参 b,默认为 undefined

递归函数

递归函数就是函数在自身的函数体内调用自身。

使用递归函数时一定要严谨,处理不当就会使程序陷入死循环。并且递归函数只在特定的情况下使用,例如处理皆成问题:

function fac(n) {
    /*
    当 n 大于 1 时,f(n) 等于 n * f(n - 1)
    当 n 小于等于 1 时,f(n) 等于 1
    */
    if (n <= 1) {
      return 1;
    } else {
      return fac(n - 1) * n;
    }
}

console.log(fac(5)); // 输出 120

全局变量与局部变量

在 JS 中,变量根据作用域的不同可以分为两种,全局变量和局部变量。

全局变量是定义在所有函数之外的变量,作用范围是该变量定义后的所有代码;局部变量是定义在函数体内的变量,只有在该函数中,且在该变量定义后的代码时,才可以使用这个变量。

例如,下面的程序是正确的:

var a = "全局变量";

function test() {
    var b = "局部变量";
    console.log(a + " " + b); // 输出:全局变量 局部变量
}

test();

下面的程序是错误的:

var a = "全局变量";

function test() {
    var b = "局部变量";
    console.log(a + " " + b); // 输出:全局变量 局部变量
}

test();
console.log(b); // ReferenceError: b is not defined

如果在函数体中定义了一个与全局变量同名的局部变量,那么该全局变量在函数体中将不起作用。例如:

var a = "全局变量";

function test() {
    var a = "局部变量";
    console.log(a); // 输出:局部变量
}

test();

在函数体内定义全局变量

在函数体内使用 var 定义的变量为局部变量,如果不使用 var 关键字,那么在函数体内定义的变量就是全局变量。例如:

function test() {
    a = "全局变量";
}

test();
console.log(a); // 输出:全局变量

_2_ 发表于 2020-1-18 19:24:19

跟C有点关系
页: [1]
查看完整版本: JS 自定义函数