当前位置: 首页 > news >正文

一级做网站视频教学秦皇岛建设网站公司

一级做网站视频教学,秦皇岛建设网站公司,建筑工程网上联合报审,医疗网站建设要多少钱作用域#xff08;scope#xff09; 规定了变量能够被访问的“范围”#xff0c;离开了这个“范围”变量便不能被访问 局部作用域 函数作用域#xff1a; 在函数内部声明的变量只能在函数内部被访问#xff0c;外部无法直接访问 function getSum(){ //函数内部是函数作用…作用域scope 规定了变量能够被访问的“范围”离开了这个“范围”变量便不能被访问 局部作用域 函数作用域 在函数内部声明的变量只能在函数内部被访问外部无法直接访问 function getSum(){ //函数内部是函数作用域 属于局部变量 const num 10 } console.log(num) //此处报错 函数外部不能使用局部作用域变量 总结 1. 函数内部声明的变量在函数外部无法被访问 2. 函数的参数也是函数内部的局部变量 3. 不同函数内部声明的变量无法互相访问 4. 函数执行完毕后函数内部的变量实际被清空了 块作用域 在 JavaScript 中 使用 { } 包裹的 代码称为代码块代码块内部声明的变量外部将【 有可能 】无法被访问 for(let i 1; i 6; i){//i 只能在代码块中被访问console.log(i) //正常 } //超出了i 的作用域 console.log(i) //报错 总结  1. let  const 声明的变量会产生块作用域var 不会产生块作用域 2. 不同代码块之间的变量无法互相访问 3. 推荐使用 let 或 const 全局作用域 script 标签 和 .js 文件 的【最外层】就是所谓的全局作用域在此声明的变量在函数内部也可以被访问。 全局作用域中声明的变量任何其它作用域都可以被访问 script //全局作用域 const num 10 function fn(){ //函数内部可以使用全局作用域的变量 consoLe.log(num) //10 } /script 注意 1. 为 window 对象动态添加的属性默认也是全局的不推荐 2. 函数中未使用任何关键字声明的变量为全局变量不推荐 3. 尽可能少的声明全局变量防止全局变量被污染 作用域链 script//全局作用域let a 1let b 2//局部作用域function f() {let a 1// 局部作用域function g() {a 2console.log(a)}g()}f()/script 作用域链本质上是底层的 变量查找机制 。 在函数被执行时会 优先查找当前 函数作用域中查找变量 如果当前作用域查找不到则会依次 逐级查找父级作用域 直到全局作用域 总结 1. 嵌套关系的作用域串联起来形成了作用域链 2. 相同作用域链中按着从小到大的规则查找变量 3. 子作用域能够访问父作用域父级作用域无法访问子级作用域 JS垃圾回收制GC JS中内存的分配和回收都是自动完成的内存在不使用的时候会被垃圾回收器自动回收 内存泄漏 不再用到的内存没有及时释放 内存的生命周期 1. 内存分配当我们声明变量、函数、对象的时候系统会自动为他们分配内存 2. 内存使用即读写内存也就是使用变量、函数等 3. 内存回收使用完毕由垃圾回收自动回收不再使用的内存 4. 说明 全局变量一般不会回收(关闭页面回收) 一般情况下局部变量的值, 不用了, 会被自动回收掉 //为变量分配内存 const age 18 //为对象分配内存 const obj { age:19 } //为函数分配内存 function fn() {const age 18console.log(age) } 堆栈空间分配区别 1. 栈操作系统: 由 操作系统自动分配释放 函数的参数值、局部变量等基本数据类型放到栈里面 2. 堆操作系统: 一般由程序员分配释放若程序员不释放由 垃圾回收机制 回收。 复杂数据类型 放到堆里面 引用计数不再使用 IE采用的引用计数算法, 定义“ 内存不再使用 ”就是看一个 对象 是否有指向它的引用没有引用了就回收对象 算法 1. 跟踪记录被 引用的次数 2. 如果被引用了一次那么就记录次数1,多次引用会 累加 3. 如果减少一个引用就 减1 -- 4. 如果引用次数是 0 则释放内存 嵌套引用 循环引用 如果两个对象 相互引用 尽管他们已不再使用垃圾回收器不会进行回收导致内存泄露 标记清除法 现代的浏览器已经不再使用引用计数算法了 现代浏览器通用的大多是基于 标记清除算法 的某些改进算法总体思想都是一致的 核心 1. 标记清除算法将“不再使用的对象”定义为“ 无法达到的对象 ”。 2. 就是从 根部 在JS中就是全局对象出发定时扫描内存中的对象。 凡是能从 根部到达 的对象都是还 需要使用 的。 3. 那些 无法 由根部出发触及到的 对象被标记 为不再使用稍后进行 回收 闭包 概念一个函数对周围状态的引用捆绑在一起内层函数中访问到其外层函数的作用域 简单理解 闭包  内层函数 外层函数的变量 function outer() { //外层函数的变量const a 1//内层函数 function f() {console.log(a) } f() } outer() 可以通过控制台打断点查看是否存在闭包 闭包作用 封闭数据提供操作外部也可以访问函数内部的变量 闭包的基本格式: //简约写法 function outer() {let i 1return function() {console.log(i)} } const fun outer() fun() //外层函数使用内层函数的变量 闭包应用 实现数据的私有 比如我们要做个统计函数调用次数函数调用一次就 function fn() {let count 1function fun() {countconsole.log(函数被调用${count}次) } return fun } const result fn() result() //2 result() //3 闭包很有用因为它允许将函数与其所操作的某些数据环境关联起来,但 闭包可能引起 内存泄漏 等问题 变量提升 变量提升是 JavaScript 中比较“奇怪”的现象它允许在变量声明之前即被访问仅存在于var声明变量 注意 1. 变量在未声明即被访问时会报语法错误 2. 变量在var声明之前即被访问变量的值为 undefined 3. let/const 声明的变量不存在变量提升 4. 变量提升出现在相同作用域当中 5. 实际开发中推荐先声明再访问变量 变量提升是什么流程 先把var 变量提升到当前作用域于最前面  只提升变量声明 不提升变量赋值  然后依次执行代码
http://www.w-s-a.com/news/432208/

相关文章:

  • 网站设计报告总结南宁商城网站推广公司
  • 淘宝做店招的网站免费网站建设自助建站
  • 重庆工信部网站绵阳公司网站建设
  • 购物网站开发流程制作企业网页
  • 定州哪里可以做网站建设项目环境影响登记表备案系统网站
  • 网站建设费属于广告费小猪网站怎么做的
  • 国内优秀设计网站站长哈尔滨微网站建设
  • 如何建设一个优秀的电商网站沐风seo
  • 从零开始学网站建设知乎安防网站下载
  • 打开网站弹出qq应用软件有哪些
  • 温州网站建设seo网站 如何做 中英文切换
  • 聊城做网站的公司资讯信阳 网站建设
  • 天津市工程建设交易网站查汗国珠海 网页设计
  • 龙果学院大型网站稳定性建设汾阳做网站
  • 湖北 个人网站备案时间域名查询备案查询
  • 网站推广方式校园网站怎么建
  • 长沙seo网站排名怎么在百度发帖
  • 织梦贷款网站模板做印章网站
  • 彭州做网站上海百度网络推广
  • 广州网站搭建快速提升网站排名荧光字网站
  • 15年做那些网站能致富做seo是什么意思
  • 各电商网站的特点网站制作2007
  • 用html做一号店网站怎么做公众号注册平台官网
  • 做盈利网站怎么备案vs做网站如何调试
  • 嘉兴做营销型网站廊坊做网站外包
  • 双语网站模板常州做网站的公司
  • 广州市车管所网站建设全国做网站公司前十名
  • 太原手手工网站建设公司视频直播服务
  • 雷达图 做图网站wordpress首页怎么美化
  • 四川做网站设计公司价格vip解析网站怎么做的