js基础语法-作用域和递归

作用域:一个变量可以生效的范围

                全局作用域:最大的作用域

                局部作用域:在这个作用域中定义的变量只能在这个局部作用域内部使用

                        在js中只有在函数中能生成一个局部作用域,每一个函数都是一个局部作用域

变量使用规则:

                访问规则:先在自己作用域内部查找,若没有在上一级作用域中查找,直到全局作用域

                        注意:若在某个的作用域中已经找到,那么此作用域的上一级作用域就不会被查找

                赋值规则:先找变量,然后再赋值

                        查找规则与访问规则是一样的,如果一直到全局作用域都没有的话,

                        那么这个变量就会被定义为全局变量,再给它赋值

作用域链:

               先在自己作用域找,如果没找到,再一层层向上查找,直到最外层全局作用域

                这种层层查找的关系叫做作用域链

递归函数:在函数内部,调用自己,循环往复

                    设置条件,避免死递归

                    递归没有普通的编程的效率高,但是代码书写相对较简单

// 递归求和

        function qiuHe(n) {

            if (n == 1) {

                return 1

            }

            return qiuHe(n - 1) + n

        }

        var sum = qiuHe(6)

        console.log(sum)

// Fibonacci数列:1,1,2,3,5,8

        function Fibonacci(n) {

            if (n === 1 || n === 2) {

                return 1

            }

            return Fibonacci(n - 1) + Fibonacci(n - 2)

        }

        var f = Fibonacci(20)

        console.log(f)

        function fcci(num) {

            var first = 1

            var second = 1

            var third = first + second

            var i = 3

            while (i < num) {

                first = second

                second = third

                third = first + second

                i++

            }

            return third

        }

        var sum = fcci(10)

        console.log(sum)

对象:存储了一些基本数据类型的一个集合,每个属性用','相隔

         属于复杂数据类型(复杂数据类型包括:Object,Function,Array,Date……)

         对象中存储的数据是以"名称:值"的形式存储

               或者以键值对的形式存在

         对象里面数据叫法:每一条数据可以称为对象的属性

         通俗的解释:一个大房子(对象名)里面有很多房间,每个房间有房间名(变量名),房间里面存储了数据。

         通过'对象名.变量名'的方式可以将变量名对应的数据调用出来

         创建简单对象的方式

                字面量方式

                        var obj={} //创建空对象

                        obj.name='张三' //将'张三'赋值给对象obj的name属性

                构造函数的方式

                        var obj=new Object() //空对象,赋值方式和上面一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值