一.今日学习内容 1.执行环境与作用域 执行环境和变量对象与作用域 标识符:变量名/函数名/形参/对象的键名 作用域:标识符可以被访问的范围(自己和自己的子(后代)作用域) 执行环境(代码运行环境):全局执行环境,函数执行环境 js的执行环境,都被放入一个栈中,栈先进后出 作用域链:提供了一套标识符访问的规则,保证标识符有序访问,一层层向外查找标识符 2.作用域分类 全局作用域 函数作用域(局部作用域) 块级作用域(ES6) 3.函数进阶 ES5 声明式:function f1(){} 表达式:let a=function(){} ES6 箭头函数:(形参)=>{js表达式} 可省略的情况: {}中只有语句代码,省略{}并省略return 形参有且只有一个,可以省略() 箭头函数中没有arguments,不能使用 4.函数的参数 形参:占位用的 实参:调用函数时传入的实际参数 5.arguments伪数组 在函数内获取到所有实参的集合,可以用for循环,[...arguments],不能再箭头函数中使用 6.设置函数参数的默认值 ES5 function fn(形参){let 变量=形参||默认值} ES6 function fn(形参=默认值){} 7.剩余参数(...rest)--数组集合 在箭头函数中可以使用 8.函数的返回值return 如果return返回的是一个函数,调用时需要调用两次 函数没有写return,函数返回undefined 函数在哪里调用,返回值就会返回到哪里 9.函数的调用 直接调用 ---函数名(实参) 对象的属性和方法调用---对象.方法() 回调---定时器,自动执行,自动调用 自己调用自己--自调用函数,立即执行函数表达式IIFE,没有函数名,将函数整个部分用()包起来,然后通过()调用 10.闭包 跨作用域访问变量,形成闭包,闭包是一种作用域的体现 常见闭包写法:父函数嵌套子函数,子函数可以访问父函数的变量,把子函数返回或者挂载window上
|