分享
note-js1.pptx
下载文档
下载文档

ID:3422953

大小:224.22KB

页数:20页

格式:PPTX

时间:2024-04-29

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
note js1
JavaScript 进阶-第1天,学习作用域、变量提升、闭包等语言特征,加深对 JavaScript 的理解,掌握变量赋值、函数声明的简洁语法,降低代码的冗余度。理解作用域对程序执行的影响能够分析程序执行的作用域范围理解闭包本质,利用闭包创建隔离作用域了解什么变量提升及函数提升掌握箭头函数、解析剩余参数等简洁语法,作用域,作用域(scope)规定了变量能够被访问的“范围”,离开了这个“范围”变量便不能被访问,作用域分为全局作用域和局部作用域。,局部作用域分为函数作用域和块作用域。局部作用域:在函数内部声明的变量只能在函数内部被访问,外部无法直接访问。块作用域:在 JavaScript 中使用 包裹的代码称为代码块,代码块内部声明的变量外部将【有可能】无法被访问。,函数作用域,在函数内部声明的变量只能在函数内部被访问,外部无法直接访问。,总结:函数内部声明的变量,在函数外部无法被访问2.函数的参数也是函数内部的局部变量3.不同函数内部声明的变量无法互相访问4.函数执行完毕后,函数内部的变量实际被清空了,块作用域,在 JavaScript 中使用 包裹的代码称为代码块,代码块内部声明的变量外部将【有可能】无法被访问。,JavaScript 中除了变量外还有常量,常量与变量本质的区别是【常量必须要有值且不允许被重新赋值】,常量值为对象时其属性和方法允许重新赋值。总结:let 声明的变量会产生块作用域,var 不会产生块作用域const 声明的常量也会产生块作用域不同代码块之间的变量无法互相访问推荐使用 let 或 const注:开发中 let 和 const 经常不加区分的使用,如果担心某个值会不小被修改时,则只能使用 const 声明成常量。,总结:为 window 对象动态添加的属性默认也是全局的,不推荐!函数中未使用任何关键字声明的变量为全局变量,不推荐!尽可能少的声明全局变量,防止全局变量被污染JavaScript 中的作用域是程序被执行时的底层机制,了解这一机制有助于规范代码书写习惯,避免因作用域导致的语法错误。,全局作用域,标签和.js 文件的【最外层】就是所谓的全局作用域,在此声明的变量在函数内部也可以被访问。,/整理:/作用域:变量的使用范围/全局作用域:函数外部的作用域,在全局申明的变量称为全局变量,可以在任何地方使用/局部作用域:函数内部的作用域,在局部申明的变量称为局部变量,只能在当前作用域使用/块级作用域:大括号包裹的代码块,就是块级作用域/申明:/let var const,作用域,总结,作用域链,总结:嵌套关系的作用域串联起来形成了作用域链相同作用域链中按着从小到大的规则查找变量子作用域能够访问父作用域,父级作用域无法访问子级作用域(就近原则),作用域链本质上是底层的变量查找机制,在函数被执行时,会优先查找当前函数作用域中查找变量,如果当前作用域查找不到则会依次逐级查找父级作用域直到全局作用域,总结:闭包本质仍是函数,只不是从函数内部返回的闭包能够创建外部可访问的隔离作用域,避免全局变量污染,能够是变量的作用范围延伸过度使用闭包可能造成内存泄漏注:回调函数也能访问函数内部的局部变量。,闭包,闭包是一种比较特殊和函数,使用闭包能够访问函数作用域中的变量。从代码形式上看闭包是一个做为返回值的函数,含义:一个作用域有权访问另外一个作用域的局部变量从代码格式上看,就是返回一个子函数,子函数访问父函数的局部变量作用:延长变量的使用范围缺点:容易引起内存泄漏代码Function father()let num=132;return function()console.log(num);Let re=Faher(),闭包,总结,预解析,预解析:代码在执行之前,先要预解析,解析变量和函数,变量:带有申明的变量变量解析,变量提升JS会把申明的变量,提升到当前作用域的最前面,只申明不赋值函数:代有函数名的变量函数解析,函数提升JS会把带有名字的函数,提升到当前作用域最前面,只定义不调用,变量提升,变量提升是 JavaScript 中比较“奇怪”的现象,它允许在变量声明之前即被访问,,总结:变量在未声明即被访问时会报语法错误变量在声明之前即被访问,变量的值为 undefinedlet 声明的变量不存在变量提升,推荐使用 let【也有人认为具有提升但是不赋值不能使用】变量提升出现在相同作用域当中实际开发中推荐先声明再访问变量,总结:函数提升能够使函数的声明调用更灵活函数表达式不存在提升的现象函数提升出现在相同作用域当中,函数提升,函数提升与变量提升比较类似,是指函数在声明之前即可被调用。,总结:声明函数时为形参赋值即为参数的默认值如果参数未自定义默认值时,参数的默认值为 undefined调用函数时没有传入对应实参时,参数的默认值被当做实参传入,参数,函数参数的使用细节,能够提升函数应用的灵活度。,总结:arguments 是一个伪数组arguments 的作用是动态获取函数的实参什么时候用arguments:参数不固定的时候用这个arguments注意:建议如果参数固定用形参,参数不固定用arguments,动态参数,arguments 是函数内部内置的伪数组变量,它包含了调用函数时传入的所有实参。,总结:.是语法符号,置于最末函数形参之前,用于获取多余的实参借助.获取的剩余实参,剩余参数,剩余值写法:,总结:箭头函数属于表达式函数,因此不存在函数提升箭头函数只有一个参数时可以省略圆括号()箭头函数函数体只有一行代码时可以省略花括号,并自动做为返回值被返回箭头函数this指向上级作用域的this,所有如果函数中用到this,不建议箭头函数箭头函数中没有 arguments,只能使用.动态获取实参,箭头函数,箭头函数是一种声明函数的简洁语法,它与普通函数并无本质的区别,差异性更多体现在语法格式上。,解构赋值是一种快速为变量赋值的简洁语法,本质上仍然是为变量赋值,分为数组解构、对象解构两大类型。数组解构对象解构,解构赋值,知道解构的语法及分类,使用解构简洁语法快速为变量赋值。,总结:赋值运算符=左侧的 用于批量声明变量,右侧数组的单元值将被赋值给左侧的变量变量的顺序对应数组单元值的位置依次进行赋值操作变量的数量大于单元值数量时,多余的变量将被赋值为 undefined变量的数量小于单元值数量时,可以通过.获取剩余单元值,但只能置于最末位允许初始化变量的默认值,且只有单元值为 undefined 时默认值才会生效注:支持多维解构赋值,比较复杂后续有应用需求时再进一步分析,数组解构,数组解构是将数组的单元值快速批量赋值给一系列变量的简洁语法,总结:赋值运算符=左侧的 用于批量声明变量,右侧对象的属性值将被赋值给左侧的变量对象属性的值将被赋值给与属性名相同的变量对象中找不到与变量名一致的属性时变量值为 undefined允许初始化变量的默认值,属性不存在或单元值为 undefined 时默认值才会生效注:支持多维解构赋值,比较复杂后续有应用需求时再进一步分析,对象解构,对象解构是将对象属性和方法快速批量赋值给一系列变量的简洁语法,

此文档下载收益归作者所有

下载文档
收起
展开