javascript函数(下)

javascript函数(下)

在这里插入图片描述

一、变量的作用域

概念:一个变量生效的范围,变量不是在所有地方都能访问,它能访问的范围就叫作用域。作用域分为全局作用域和局部作用域。
1.全局作用域
  任何地方都可访问的变量就是全局变量,它对应的区域就是全局作用域
  (1)全局作用域是最大的作用域;
  (2)全局作用域中定义的变量可以在任何地方使用;
  (3)页面在浏览器中打开时,浏览器会自动给我们生成一个全局作用域window,该作用域要页面关闭才会销毁。

2.局部作用域
  局部作用域就是在去哪聚作用域下开辟出来的一个相对小一些的作用域。
  (1)局部作用域只能在局部作用域范围内使用;
  (2)每个函数都是一个局部作用域。

二、变量使用规则

1.访问规则
访问规则就是获取变量值的规则。先在自己的作用域中查找,如果没有就再从上一级作用域查找,直到找完全局作用域,如果都没找到,就报错。

2.赋值规则
  赋值实际上是两个步骤,找变量和给变量赋值。
  (1)找变量:找变量的规则与变量的访问规则一样,先在自己的作用域中查找,如果没有再往上一级作用域找。
  (2)给变量赋值:找到变量后就给对应变量赋值。如果没有找到变量,程序会将该变量默认定义为全局变量。

3.作用域链:
  变量访问或赋值时先在自己的作用域查找,如果没找到,再一层一层向上查找,至到最外层全局作用域。

三、递归函数

概念:一个函数内部调用自己,这样的函数称为递归函数
注意:
  (1)写递归函数时一定要写结束递归的条件,否则会变成死递归。
  (2)递归函数代码很简洁,但是效率很低,因为它要不停地调用自己,当调用次数达到系统的极限时,系统会直接崩溃,程序没运行完的话就得不到最终结果。

例:递归函数求前n项之和

        /**
        分析:
         * 累加
         * n=1  sum1=1
         * n=2  sum2=sum1+2
         * n=3  sum3=sum2+3
         * n=4  sum4=sum3+4
         * ...
         * n=n  sumn=sum(n-1)+n
        */

function sum(n){
    if (n==1) {	//结束递归的条件
        return 1
    }
    var s=sum(n-1)+n //递归语句,在函数内调用本身函数
    return s
}
console.log(sum(20));

过程解析如下图:
过程解析
运行得到结果:
运行结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值