JavaScript中的函数简述

对于最近学的JavaScript中的函数,我稍微的整理了一下,希望会对大家有帮助

一 函数的定义与调用

1 在Javascript中,函数就是对象,其应用:被赋值给一个变量;被赋值为对象的属 性;作为参数被传入别的函数;作为函数的结果被返回。它可以避免相同功能的代码重复编写,函数的使用可以方便程序的开发和使用。
2 内置函数
在这里插入图片描述
注意:parseFloat()用于返回解析字符串后的浮点数;
isNaN()判断给定参数是否为NaN,判断结果为是,返回true,否则返回false; parseInt()用于返回解析字符串后的整数值。

3 函数的定义:由function、函数名、参数和函数体四部分构成
4 参数设置
A 无参函数
B 有参函数
C 获取函数调用时传递的所有实参
在开发时若不能确定函数的形参个数,此时定义可以不设置形参,在函数体中直接通过arguments对象获取函数调用时传递的实参,实参的总数可通过length属性获取
在这里插入图片描述5 函数的调用
A 直接调用:函数名(实参值)
B 在表达式中调用
在这里插入图片描述
运行结果:
在这里插入图片描述
C 在事件中调用
在这里插入图片描述
注意:return 语句不是函数必须的,但任何函数在任何时候都可以通过return语句+ 返回的值,实现返回;若在一个文件中,定义函数名字相同,会使用最后定义的函数。

二 变量的作用域

1 划分
A 全局作用域
B 函数作用域
C 块级作用域
在这里插入图片描述
运行结果:
在这里插入图片描述
2 垃圾回收机制
A 在JavaScript中,局部变量只有在函数的执行过程中存在,而在这个过程中会为局部变量在(栈或堆)内存上分配相应的空间,以存储它们的值,然后在函数中使用这些变量,直到函数结束;
B 一旦函数执行结束,局部变量就没有存在必要了,此时JavaScript就会通过垃圾回收机制自动释放它们所占用的内存空间。
C 在开发中若要保留局部变量的值,可以通过以下两种方式实现:
在这里插入图片描述
在这里插入图片描述
3 注意点:
A 在代码中任何地方都能访问到的对象拥有全局作用域;
B 所有未声明直接赋值的变量自动拥有全局作用域;
C 所有window对象的属性拥有全局作用域;
D 作用域是分层的,内层作用域可以访问外层作用域的变量,反之则不行。
4 函数声明和函数表达式
A 函数声明:使用function关键字声明函数
B 函数表达式:函数表达式指的是将声明的函数赋值给一个变量,通过变量完成函数的调用和参数的传递,是JavaScript中另一种实现自定义函数的方式。
在这里插入图片描述
注意:除了以上定义和调用形式的区别之外,两者最本质的区别是:
(1)JavaScript引擎在解析JavaScript代码时会"函数声明提升"当前执行环境(作用域)上的函数声明;函数表达式必须等到JavaScript引擎执行到他所在行时,才会解析
(2)函数表达式后面可以加括号立即调用该函数,函数声明不可以,只能以fnName() 形式调用。

三 匿名函数

1 匿名函数:无函数名称;可以有效的避免全局变量的污染以及函数名的冲突问题;既是函数表达式的另一种表示形式,又可通过函数声明的方式实现调用。
在这里插入图片描述
注意:(1)自调用方式也称为立即执行函数,此函数只能是函数表达式,不能是函数声明;
(2)它的作用是:创建一个独立的作用域,避免被同名变量覆盖

2 箭头函数
(1)ES6中引入了一种新的语法编写匿名函数,我们称之为箭头函数;
(2)特点:一个箭头函数表达式的语法比一个函数表达式更短;
3 回调函数;回调函数指的是一个函数A作为参数传递给一个函数B,然后在B的函数体内调用函数A,此时函数A称为回调函数。
在这里插入图片描述
eg1:
在这里插入图片描述
运行结果:
在这里插入图片描述
eg2:
在这里插入图片描述
在这里插入图片描述

四 嵌套与递归

1 函数嵌套与作用域链:
A 函数嵌套:在一个函数内部存在另一个函数的声明
B 作用域链:内层函数只能在外层函数作用域内执行,在内层函数执行的过程中,若需要引入某个变量,首先会在当前作用域中寻找,若未找到,则继续向上一层级的作用域中寻找,直到全局作用域,我们称这种链式的查询关系为作用域链。
在这里插入图片描述
运行结果:
在这里插入图片描述

2 递归调用:递归调用是函数嵌套调用中一种特殊的调用。它指的是一个函数在其函数体内调用自身的过程
eg计算阶乘
在这里插入图片描述
注意:递归调用虽然在遍历维数不固定的多维数组时非常合适,但它占用的内存和资源比较多,同时难以实现和维护,因此在开发中要慎重使用函数的递归调用。
3 [案例]:求斐波那契数列第N项的值
在这里插入图片描述
运行结果:

在这里插入图片描述

五 闭包函数

1 基本概念
在JavaScript中,内嵌函数可以访问定义在外层函数中的所有变量和函数,并包括其外层函数能访问的所有变量和函数。但是在函数外部则不能访问函数的内部变量和嵌套函数。此时就可以使用"闭包"来实现。
所谓"闭包"指的是有权访问另一函数作用域内变量(局部变量)的函数,也就是闭包由函数以及创建该函数的词法环境组合而成。
它最主要的用途是以下两点:可以在函数外部读取函数内部的变量;可以让变量的值始终保持在内存中;
2 缺点:由于闭包会使得函数中的变量一直被保存在内存中,内存消耗很大,所以闭包的滥用可能会降低程序的处理速度,造成内存消耗等问题。
3 闭包函数的实现:常见创建方式就是在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量。
在这里插入图片描述
运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值