2021-09-28 JS基础第五天


函数的作用域:

函数的作用域的作用有:保护数据的安全( 全局的不安全 ),减少命名冲突

作用域分为三个作用域:全局作用域,局部作用域,块级作用域

全局作用域的特点:全局变量可调用,到处都可以访问

局部作用域的特点:局部变量,只能内部调用,形参属于局部变量

块级作用域的特点:块级变量,智能对应的{}里面使用

作用域链:所有的作用域都是基于全局,开辟一层就会形成一条链,变量的访问以就近原则,自己没有的找上一级,

// 全局作用域(Script, 以前叫Global): 这里定义的变量叫全局变量: 特点是: 哪里都能用(公共的)

        let global = '全局变量'

        // 到处可用: 到处可改(危险: 因此全局变量使用较少)

        // 局部作用域(Local): 函数内部区域, 函数内部定义的变量叫局部变量: 特点是: 只能当前函数内部使用

        // 形参: 属于局部变量, 只能在函数内部使用

        function fn() {

            // 访问全局变量: 可以访问

            console.log(global)

            // 局部变量

            let local = '局部变量'

            console.log(local)

        }

        fn()

        // 全局作用域访问局部变量

        // console.log(local)           // 报错

        // 块级作用域(Block)

        if (true) {

            let block = '块级变量'

            console.log(block)

        }

        // 全局作用域访问块级变量

        // console.log(block)           // 报错

        // 块级的优点: 减少了命名冲突

        for (let i = 0; i < 3; i++) { }

        for (let i = 0; i < 5; i++) { }

        // console.log(i)               // 报错

        // 声明变量一定要let关键字: 否则一律是全局变量

        for (i = 0; i < 10; i++) { }

        console.log(i)

    </script>



匿名函数:没有名字,let 变量名=function(){},调用:变量名()

    <script>

        // 匿名函数: 函数表达式

        // 函数没有名字, 将函数的声明赋值给变量保存

        // 不要给匿名函数加名字: 没有存在的意义(外部不能通过函数名调用)

        let fn = function (a, b) {

            return a + b

        }

        console.log(fn)

        // 调用匿名函数: 变量名(实参)

        let res = fn(1, 2)

        console.log(res)

    </script>


立即执行函数    (function(){}) 调用在后面添加() 函数之间用;隔开

<script>

        // 立即执行函数: 自调用函数(自己调用自己)

        // 解决: 全局变量污染的问题( 防止污染: 沙箱)

        // 语法

        // (function(){})()

        // (function(){}) 表示定义一个函数(匿名)

        // () 表示调用前面的函数

        (function () {

            // 代码写到函数里面: 里面的变量是局部变量(安全也不影响外面)

            console.log(1)

            // 在里面定义变量: 安全

            let dog = '哈士奇'

            console.log(dog)

        })()

        // 做别的功能

        let dog = '中华田园犬'

        console.log(dog);

        // 立即执行函数前面必须有分号

        (function (a) {

            console.log(2)

            console.log(a)

        })('hello')

    </script>

对象

对象的使用

对象的增删改查

增加    对象.新属性名=一个元素

删除    delete 对象.属性名

修改  对象.原有的属性名=新的元素

查找      对象。属性名      对象【字符串属性名】

例子:

<script>

      // delete是对象的专属 语法

      let goods = {

        name: "小米10 青春版",

        num: "100012816024",

        weight: "0.55kg",

        address: "中国大陆",

      };

      console.log(goods);

      // 1. 新增: 对象.新属性名 = 值  || 对象['新属性名'] = 值

      goods.price = "1999元";

      goods["max"] = "型号";

      console.log(goods);

      // 2. 修改: 对象.属性名 = 值  || 对象['属性名'] = 值

      goods.max = "plus";

      goods["num"] = "1231243";

      console.log(goods);

      // 3. 删除: delete 对象.属性名  || delete 对象['属性名']

      delete goods.max;

      console.log(goods);

    </script>



对象遍历

用for(let key(属性名) in 对象)

    <script>

//声明一个对象

      let goods = {

        name: "小米10 青春版",

        num: "100012816024",

        weight: "0.55kg",

        address: "中国大陆",

      };

      //利用for遍历对象

      for (let k in goods) {

    //k是对象的属性名

        console.log(goods[k]);

      }

    </script>



难点:在作用域这边比较纠结,对象用法增删改查这边有可能与数组的增删改查搞混。

做案例有点难度,不能一次性写出来,都练习便,复习预习相结合

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容