鱼C论坛

 找回密码
 立即注册
查看: 2576|回复: 1

[学习笔记] JS 自定义函数

[复制链接]
发表于 2020-1-17 11:00:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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); // 输出:全局变量

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-18 19:24:19 From FishC Mobile | 显示全部楼层
跟C有点关系
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 03:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表