我的账户
猩码学苑

专注C++开发菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

康利20221123JS高阶01

[复制链接]
智商不在服务区 发表于 2022-11-24 00:06:33 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、学习内容:        执行环境与作用域
                执行环境、变量对象和作用域
                        1. 标识符:变量名/函数名/形参/对象的键名,统称为标识符
                        2. 作用域:标识符可以被访问的范围,就是作用域
                        3. 执行环境:代码运行的环境,js有两种执行环境,全局执行环境,函数执行环境
                        4. js执行环境,都被放入一个栈中----先进后出
                        5. 作用域链:提供了一套标识符访问的规则,保证标识符有序访问
                        作用域链:提供了一套标识符访问规则,让标识符可以进行有序访问,(规则:从里往外找,查找标识符,找到就使用,停止查找的过程,直到window,找不到,会报错)
                        作用域根据作用域链这套规则锁死了
                        作用域:标识符可以被访问的范围:(自己和自己的子(后代)作用域)
                作用域分类
                        1. 全局作用域
                        2. 函数作用域(局部作用域)
                        3. 块级作用域(ES6新增的,ES5没有)
        函数进阶
                声明函数的方式
                        声明式
                        表达式
                        箭头函数
                                const sum2 = (a, b) => {
      return a + b;
}
                                const add2 = (n) => {
      return n + 2;
}
                                const newArr2 = arr.map((v) => {
      return v * 10;
});
                                setTimeout(() => {
    console.log('222');
}, 2000);
                箭头函数
                        语法:(形参)=>{js表达式}
                        箭头函数的省略
                                1.{}中只有一句代码,省略花括号并且同时必须省略return
                                2.形参有且只有一个,可以省略()
                                3.没有形参时()不可省略
                函数的参数
                        1. 形参:占位用的,叫什么都没有关系,主要是要语义化,形式参数
                        2. 实参:调用函数的时候传入的实际参数
                arguments
                        是一个伪数组,在函数内部获取到所有得到实参的集合,可以使用for循环,可以通过小标取值,像数组,又不是数组,不能使用数组的方法
                设置函数参数的默认值
                        ES5:function fn(形参) {
    let = 变量 || 默认值;
}
                        ES6:function fn (形参 = 默认值){

}
                剩余参数
                        ES6的箭头函数中没有arguments
                        剩余参数rest是真数组,可以直接使用数组的方法
                函数的返回值
                        函数返回什么,就得到什么,函数可以返回任何东西
                        函数没有写return,函数的返回值为默认值undefined
                        函数在哪里调用,返回值就返回到哪里去
                        function fn(m, n) {
      let sum = m + n;
      return sum;
}
let rst = fn(1, 2);
console.log(rst);
                        function fnn(m, n) {
     let sum = m + n;
     console.log(sum);
}
fnn(1, 2);
                        function f3() {
     // return fn(2, 4);
     return [{
         age: 42,
         sex: '2',
         show: function () {
            return '8888'
            }
         }]
}
// console.log(f3());
console.log(f3()[0].sex);
console.log(f3()[0].show());
                        function f1(m, n) {
      let sum = m + n;
      return function () {
          return '888';
      }
}
console.log(f1()());
                函数的调用
                        直接调用    函数名(实参)
                        对象的属性和方法调用   对象.方法()
                        回调---定时器,自动执行,自动调用
                        自己调用自己----自调用函数,立即执行函数表达式IIFE
                        const obj = {
     show: function () {
         console.log(222);
     }
}
obj.show();
                        // 立即执行,IIFE 自己调用自己
;(function () {
      var a = 10;
      var b = 20;
      console.log('自调用函数');
})();
                立即执行函数表达式
                        a挂载到window上,成为了全局变量,全局的标识符
                        写js代码,如果全局标识符过多,全局污染
                        比较容易与其他人的代码冲突
        闭包
                1. 闭包是一种跨作用域访问变量,形成闭包,闭包是一种作用域的体现
                2. 常见的闭包写法是:父函数嵌套子函数,子函数可以访问父函数的变量,把子函数返回或者挂载到window上

回复

使用道具 举报

关注0

粉丝0

帖子68

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注C++菁英教育

客服电话:18009298968

客服时间:9:00-21:00

猩码学苑 - 专注C++开发菁英教育!( 陕ICP备2025058934号-1 )

版权所有 © 陕西菁英数字科技有限公司 2023-2026