鱼C论坛

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

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

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

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

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

x
JS 自定义函数


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

函数的定义和调用

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

  1. function 函数名 (参数列表) {
  2.     函数体
  3. }
复制代码


例如:

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

  5. go(); // 调用 go 函数,将输出 "Hello"
复制代码

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

  5. add(3, 5); // 输出 8 (3 + 5)
复制代码

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

  5. var a = mul(3, 5); // a 等于 15 (3 * 5)
  6. console.log(a);
复制代码


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

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

例如:


  1. function test(a, b) {
  2.     console.log(a);
  3.     console.log(b);
  4. }

  5. test(3); // 没有指定形参 b,默认为 undefined
复制代码


递归函数

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

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

  1. function fac(n) {
  2.     /*
  3.     当 n 大于 1 时,f(n) 等于 n * f(n - 1)
  4.     当 n 小于等于 1 时,f(n) 等于 1
  5.     */
  6.     if (n <= 1) {
  7.         return 1;
  8.     } else {
  9.         return fac(n - 1) * n;
  10.     }
  11. }

  12. console.log(fac(5)); // 输出 120
复制代码


全局变量与局部变量

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

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

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

  1. var a = "全局变量";

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

  6. test();
复制代码


下面的程序是错误的:

  1. var a = "全局变量";

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

  6. test();
  7. console.log(b); // ReferenceError: b is not defined
复制代码


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

  1. var a = "全局变量";

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

  6. test();
复制代码


在函数体内定义全局变量

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

  1. function test() {
  2.     a = "全局变量";
  3. }

  4. test();
  5. 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-3-29 13:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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