JS函数

本文深入探讨JavaScript函数的概念、语法及作用,包括函数声明、调用、分类,如内置函数和匿名函数。介绍了Function构造器、函数提升、自调用函数以及箭头函数的用法。此外,还讲解了参数(形参和实参)、arguments对象、作用域、垃圾回收机制以及函数递归的基本原理。通过对这些核心概念的理解,有助于提高代码的复用性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS函数

概念

函数就是把完成特定功能的一段代码(抽象出来),使之成为程序中的独立实体,起个名字(函数名)。可以在同一个程序或其他程序中多次重复使用(通过函数名调用

作用

  • 使程序变得简短而清晰
  • 有利于程序维护
  • 可以提高程序开发效率
  • 提高了代码的重用性(复用性)

函数的语法

函数声明:

function 函数名(参数){
函数体(具体要执行的代码)
}
//函数名可包含字母、数字、下划线和美元符号(规则与变量名相同)。

函数调用

格式:函数名();

函数的分类

内置函数(系统函数,官方函数)

  • alert()
  • document.write()
  • console.log()
  • parseInt(),parseFloat()…

函数表达式(匿名函数)

var x = function (a, b) {return a * b};

Function()构造器

JavaScript 函数是通过 function 关键词定义的。函数也可以通过名为 Function() 的内建 JavaScript 函数构造器来定义。

var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);
//等同于
var myFunction = function (a, b) {return a * b};
var x = myFunction(4, 3);

函数提升

Hoisting 是 JavaScript 将声明移动到当前作用域顶端的默认行为。Hoisting 应用于变量声明和函数声明。
正因如此,JavaScript 函数能够在声明之前被调用:

myFunction(5);
function myFunction(y) {
     return y * y;
}

使用表达式定义的函数不会被提升

自调用函数

  • 函数表达式可以作为“自调用”。
  • 自调用表达式是自动被调用(开始)的,在不进行调用的情况下。
  • 函数表达式会自动执行,假如表达式后面跟着 ()。
  • 您无法对函数声明进行自调用。
  • 您需要在函数周围添加括号,以指示它是一个函数表达式:
//匿名的自调用函数
(function () {
    var x = "Hello!!";      //我会调用我自己
})();

箭头函数

  • 箭头函数允许使用简短的语法来编写函数表达式。
// ES5
var x = function(x, y) {
  return x * y;
}

// ES6
const x = (x, y) => x * y;

箭头函数没有自己的 this。它们不适合定义对象方法。

箭头函数未被提升。它们必须在使用前进行定义。

使用 const 比使用 var 更安全,因为函数表达式始终是常量值。

如果函数是单个语句,则只能省略 return 关键字和大括号。因此,保留它们可能是一个好习惯:

const x = (x, y) => { return x * y };

形参,实参

函数的参数是和变量一样使用的
形参就是在函数定义时,函数名后面的参数,不能用var修饰
实参就是调用时,函数名后边的参数
在一般传值调用的机制中只能把实参传给形参,而不能把形参的值反向地传给实参,因此在函数调用过程中,形参值发生改变,而实参中的值不会改变

function addNum(n){
n+=5;
}
var a=10;
addNum(a);
alert(a);

arguments

  • 每个函数内部都有一个arguments,系统内置
  • arguments用来存储实际传入的参数(实参)
  • 属性
    arguments.length 输出当前存储的参数的个数
  • 访问某一个数据
    arguments[下标] 下标是从0开始的
  • 优先使用形参,具有可读性

函数的作用域

垃圾回收机制:调用函数的时候,系统会分配对应的空间给这个函数使用(空间大小一般情况下由该函数里声明的变量和形参决定),函数使用完毕之后,这个内存空间要释放,还给系统。

函数内部声明的变量和形参是属于当前函数的内存空间的

内存管理机制:在函数中声明的变量和形参,会随着函数的调用被创建,随着函数的调用结束而被销毁。

局部作用域:在函数中声明的变量和形参,有效范围是当前函数(当前函数的大括号)

就近原则:离哪个作用域近就使用哪个作用域内的同名变量

函数递归

递归

满足以下三个特点
1.函数自己调用自己
2.一般情况有参数
3.一般情况有return

递归可以解决循环能做的所有事情,一些循环不能做的事情

方法

1.首先找临界值,即无需计算,获得的值
2.找这一次和上一次的关系
3.假设当前函数已经可以使用,调用自身计算上一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值