JavaScript函数(进阶版)(函数表达式、回调函数、递归函数、闭包函数,全局变量、局部变量)

函数内置对象

函数的内置对象arguments,保留了函数接收的所有实参,arguments以数组的方式存放所有接收的实参。

当不确定函数中接收到了多少个实参的时候,可以用arguments来获取实参。

function fn() {
    console.log(arguments)  // 输出结果:Arguments(3) [1, 2, 3, …]
    console.log(arguments.length) // 输出结果:3
    console.log(arguments[1])        // 输出结果:2
}
fn(1, 2, 3)

在这里插入图片描述

函数表达式

定义

函数表达式(匿名函数):将声明的函数赋给一个变量,然后由该变量完成函数的调用和参数传递

var 变量名 = function([参数]){
    函数体
}

练习

找出一维数组的最大值

//寻找最大值的函数表达式
var getMax=function(arr){
    var max=arr[0]
    for(var i=0;i<arr.length;i++){
        if(max<arr[i]){
            max=arr[i]
        }
    }
    return max
}

//调用函数
var arr=[11,23,45,31,10,87,33]
console.log("max="+getMax(arr))

在这里插入图片描述

变量的作用域

作用域的分类

(1)全局变量:在函数外部定义的变量(显式定义)或在函数内部不用var定义的变量(隐式定义),在浏览器页面关闭后才会销毁,比较占空间。

(2)局部变量:在函数体内部利用var关键字定义的变量。

(3)块级变量:ES6提供的let关键字声明的变量。

回调函数

定义

将一个函数作为参数传递给另一个函数,在另一个函数内对参数函数进行调用,参数函数就是回调函数。

练习

//定义函数
function fun(a,b){
    return a+b
}

function cal(m,n,fn){
    return fn(m,n)

//调用函数
var s=cal(2,3,fun){
    console.log("s="+s)

运行结果:5

递归函数

定义

函数自己调用自己。

练习

计算n的阶乘。

//定义函数
function func(n){
    if(n==1){
        return 1
    }                     //递归结束的条件
    return n*func(n-1)
}

//函数调用
var n=parseInt(promopt("请输入一个整数:"))
console.log("n的阶乘为:"+func(n))

“闭包”函数**

定义

“闭包”指的是有权访问另一函数作用域内变量(局部变量)的函数。

主要用途:

(1)可以在函数外部读取函数内部的变量;

(2)可以让变量的值始终保持在内存中。(所以滥用会造成内存消耗,降低程序处理速度等问题)

练习

function fn(){
    var times=0
    var c=function(){
        return ++times
    }
    return c
}

//调用函数
var count=fn()         //count是闭包函数,访问fn()函数内部的变量(times变量),并且在第二次执行调用语句时,函数内部变量times不再初始化。(用途2)
console.log(count())   //1
console.log(count())    //2
console.log(count())      //3
  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值