JS_作用域_对象

01-练习

       输出0-3的组合数中的奇数

                 <script>

        function fn(n, m) {

            for (var i = n; i <= m; i++) {

                for (var j = n; j <= m; j++) {

                    // console.log(i * 10 + j)

                    var res = i * 10 + j

                    if (res % 2 !== 0) {

                        console.log(res)

                    }

                }

            }

        }

        fn(0, 3)

    </script>

02-作用域

       含义,写法

               <script>

        // 作用域

        // - 产生作用的范围

        // 全局变量

        // - 谁都可以使用

        // - 生命周期:开启页面到关闭页面(会话级)

        var a = 100

        function fn() {

            console.log(a)          // 100

        }

        fn()

        function fun() {

            // 局部变量

            // - 只有函数内部可以使用

            // - 生命周期:函数执行完立即消失

            var b = 100

        }

        fun()

        console.log(b)              // 报错

    </script>

03-作用域链

         作用域链

         - 先看自己有没有,自己没有看父函数有没有,父函数没有一直往上找,找到全局,全局没有报错

              举例

                    

        var a = 100

        function fn() {

            var a = 200

            function fn2() {

                var a = 300

                function fn3() {

                    var a = 400

                    console.log(a)          // 400

                }

                fn3()

            }

            fn2()

        }

        fn()

04-递归

       含义

                递归

         - 循环调用

         - 自己调用自己

         - 函数的高阶调用方式

         - 递归要先写结束

       例子

                 var count = 0

        function fn() {

            count++

            console.log(count)

            if (count === 3) {

                return

            }

            fn()

        }

        fn()

04-递归2

          1-7的阶乘

        function fn(n) {

            if (n === 1) {

                return 1

            }

            // 函数() -> 乘法 —> return

            return n * fn(n - 1)

        }

        var n = fn(7)

        console.log(n)

04-递归3

          斐波那契数列

         1 1 2 3 5 8 13 21 34 55 89 144

         兔子算法

         1. 不会死

         2. 近亲可以结婚

         3. 小兔子第三个月长大,就可以生小兔子,一次生一对,一个月生一次

         12: 1440

         24: 463680

         36: 149303520

         48

         递归的性能非常高,但是少用(你用不好)

         算法

             

        var count = 0

        function fn(n) {

            count++

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

                return 1

            }

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

        }

        var n = fn(36)

        console.log(n)

        console.log(count)      // 29860703 次数

05-对象

       含义

                对象

         - Object

         - JS O N  JS的一种数据结果表

         - 无序数据集合

         - { str: 'hello', num: 100, flag: true, un: undefined, fn: function () {}, children: {} }

         - { 属性名:属性值,属性名:属性值,属性名:属性值 ... }

         数据类型

         复杂数据类型:function object

         基本数据类型:number string boolean null undefined

       写法

             

        // 字面量

        var obj = {}

        // 添加内容

        obj.name = 'Jack'

        obj.age = 18

        console.log(obj)

        // 构造函数

        var obj2 = new Object()

        obj2.name = 'Rose'

        obj2.age = 80

        console.log(obj2)

06-对象使用

       增删改查

               // object

        // - 操作

        // - CRUD  增删改查

        var obj = {

            name: '张三',

            age: 18

        }

        // 增加

        obj.job = '放牛'

        //

        obj.age = 20

        //

        console.log(obj.name)           // 张三

        console.log(obj.aaa)            // undefined

        //

        delete obj.job

        console.log(obj)

       例子

             

         请用对象介绍自己

         - 你叫什么、年龄、性别、学号、家庭地址

        var obj = {

            name: '高旭',

            age: 18,

            age: '男',

            id: 9527,

            address: '沈阳浑南'

        }

        console.log(obj)

06-对象使用2

       练习a

                       请用对象介绍自己

         - 你叫什么、年龄、性别、学号、家庭地址

                    

         var obj = {}

         obj.name = 'Abel'

         obj.age = 20

         obj.sex = '男'

         obj.address = '沈阳浑南'

         console.log(obj)

       练习b

                 小明今年22岁家住杭州是一名前端工程师,家里有俩姐姐,大姐叫小红今年28岁是一名产品经理,二姐叫小美今年26岁是一名UI设计师

                    

        var sister1 = {

            name: '小红',

            age: 28,

            job: '产品经理'

        }

        var sister2 = {

            name: '小美',

            age: 26,

            job: 'UI'

        }

        var obj = {

            name: '小明',

            age: 22,

            address: '杭州',

            job: '前端',

            family: {

                sister1: sister1,

                sister2: sister2

            }

        }

        console.log(obj)

07-对象循环的使用

        <script>

        var obj = {

            name: 'Jack',

            age: 18,

            id: 9527

        }

        console.log(obj)

        // console.log(obj.name)

        // console.log(obj.age)

        // console.log(obj.id)

        // 循环

        // - for in

        for (var aaa in obj) {

            // console.log(aaa)             // 属性名

            // console.log(obj[aaa])        // 属性值

        }

    </script>

08-对象真正的写法

         <script>

        // 无序数据集合

        var obj = {

            "name": "Jack",

            "age": 18,

            "id": 9527

        }

        console.log(obj)

        // console.log(obj.name)

        // console.log(obj["name"])

        for (var attr in obj) {

            // console.log(attr)       // "name" "age" "id"

            console.log(obj[attr])

        }

    </script>

09-开发一个项目的过程

                 开发一个项目:项目经理

          产品(画原型图)-> UI(设计图) -> 前端(前端管后台要数据)后端 -> 测试 -> 前端(改bug) 后端(改bug) -> 运维(上线)

10-递归对象

        <script>

        var obj = {

            value: 0,

            children: {

                value: 1,

                children: {

                    value: 2,

                    children: {

                        value: 3,

                        children: {

                            value: 4

                        }

                    }

                }

            }

        }

        // 递归

        // - 数据层数不固定使用递归

        function fn(obj) {

            console.log(obj.value)

            if (obj.children !== undefined) {

                fn(obj.children)

            }

        }

        fn(obj)

    </script>

11-数组

       含义,写法

               <script>

        // 数组

        // - 有序数据集合

        // - [12, 5, 7, 99, 103]

        // arguemnts 伪数组 没有方法 有下标和长度

        // var arr = [12, 5, 7, 99, 103]

        // // 方法

        // arr.push(1000)

        // console.log(arr)

        // console.log(arr.length)

        // console.log(arr[2])

        // 添加30个偶数

        var arr = []

        for (var i = 2; i <= 60; i += 2) {

            arr.push(i)

        }

        console.log(arr)

    </script>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值