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

查询数据的网站怎么做的三门峡网站seo

查询数据的网站怎么做的,三门峡网站seo,做网站材料,类似qq空间的网站前言:哈喽,大家好,我是前端菜鸟的自我修养!今天给大家分享经典面试题【作用域、闭包、变量提升】,并提供具体代码帮助大家深入理解,彻底掌握!原创不易,如果能帮助到带大家&#xff0…

前言:哈喽,大家好,我是前端菜鸟的自我修养!今天给大家分享经典面试题【作用域、闭包、变量提升】,并提供具体代码帮助大家深入理解,彻底掌握!原创不易,如果能帮助到带大家,欢迎收藏+关注哦 💕

🌈🌈文章目录

一、作用域

1.局部作用域

1.1 函数作用域

1.2 总结

1.3 块作用域

1.4 总结

2. 全局作用域

二、作用域链

三、闭包

四、变量提升


一、作用域

目标:了解作用域对程序执行的影响作用域链的查找机制,使用闭包函数创建隔离作用域避免全局变量污染。

作用域(scope)规定了变量能够被访问的“范围”,离开了这个“范围”变量便不能被访问,作用域分为全局作用域局部作用域

1.局部作用域

局部作用域分为函数作用域块作用域

1.1 函数作用域

在函数内部声明的变量只能在函数内部被访问,外部无法直接访问。

  <script>// 声明 counter 函数function counter(x, y) {// 函数内部声明的变量const s = x + yconsole.log(s) // 18}// 设用 counter 函数counter(10, 8)// 访问变量 sconsole.log(s)// 报错</script>

1.2 总结

  1. 函数内部声明的变量,在函数外部无法被访问

  2. 函数的参数也是函数内部的局部变量

  3. 不同函数内部声明的变量无法互相访问

  4. 函数执行完毕后,函数内部的变量实际被清空了

1.3 块作用域

在 JavaScript 中使用 {} 包裹的代码称为代码块,代码块内部声明的变量外部将【有可能】无法被访问。

 <script>{// age 只能在该代码块中被访问let age = 18;console.log(age); // 正常}// 超出了 age 的作用域console.log(age) // 报错let flag = true;if(flag) {// str 只能在该代码块中被访问let str = 'hello world!'console.log(str); // 正常}// 超出了 age 的作用域console.log(str); // 报错for(let t = 1; t <= 6; t++) {// t 只能在该代码块中被访问console.log(t); // 正常}// 超出了 t 的作用域console.log(t); // 报错</script>

JavaScript 中除了变量外还有常量,常量与变量本质的区别是【常量必须要有值且不允许被重新赋值】,常量值为对象时其属性和方法允许重新赋值。

<script>// 必须要有值const version = '1.0.0';​// 不能重新赋值// version = '1.0.1';​// 常量值为对象类型const user = {name: '小明',age: 18}​// 不能重新赋值user = {};​// 属性和方法允许被修改user.name = '小小明';user.gender = '男';</script>

1.4 总结

  1. let 声明的变量会产生块作用域,var 不会产生块作用域

  2. const 声明的常量也会产生块作用域

  3. 不同代码块之间的变量无法互相访问

  4. 强烈推荐使用 letconst!尽量避免使用var!!!

:开发中 letconst 经常不加区分的使用,如果担心某个值会不小被修改时,则只能使用 const 声明成常量。

2. 全局作用域

<script> 标签  .js 文件的【最外层】就是所谓的全局作用域,在此声明的变量在函数内部也可以被访问。

  <script>// 此处是全局function sayHi() {// 此处为局部}​// 此处为全局</script>

全局作用域中声明的变量,任何其它作用域都可以被访问,如下代码所示:

 <script>// 全局变量 nameconst name = '小明'// 函数作用域中访问全局function sayHi() {// 此处为局部console.log('你好' + name)}​// 全局变量 flag 和 xconst flag = truelet x = 10// 块作用域中访问全局if(flag) {let y = 5console.log(x + y) // x 是全局的}</script>

总结:

  1. window 对象动态添加的属性默认也是全局的,不推荐

  2. 函数中未使用任何关键字声明的变量为全局变量,不推荐!!!

  3. 尽可能少的声明全局变量,防止全局变量被污染

JavaScript 中的作用域是程序被执行时的底层机制,了解这一机制有助于规范代码书写习惯,避免因作用域导致的语法错误。

二、作用域链

在解释什么是作用域链前先来看一段代码:

  <script>// 全局作用域let a = 1let b = 2// 局部作用域function f() {let c// 局部作用域function g() {let d = 'yo'}}</script>

函数内部允许创建新的函数,f 函数内部创建的新函数 g会产生新的函数作用域,由此可知作用域产生了嵌套的关系

如下图所示,父子关系的作用域关联在一起形成了链状的结构,作用域链的名字也由此而来。

作用域链本质上是底层的变量查找机制,在函数被执行时,会优先查找当前函数作用域中查找变量,如果当前作用域查找不到则会依次逐级查找父级作用域直到全局作用域,如下代码所示:

 <script>// 全局作用域let a = 1let b = 2​// 局部作用域function f() {let c// let a = 10;console.log(a) // 1 或 10console.log(d) // 报错// 局部作用域function g() {let d = 'yo'// let b = 20;console.log(b) // 2 或 20}// 调用 g 函数g()}​console.log(c) // 报错console.log(d) // 报错f();</script>

总结:

  1. 嵌套关系的作用域串联起来形成了作用域链

  2. 相同作用域链中按着从小到大的规则查找变量

  3. 子作用域能够访问父作用域,父级作用域无法访问子级作用域

三、闭包

闭包是一种比较特殊和函数,使用闭包能够访问函数作用域中的变量。从代码形式上看闭包是一个做为返回值的函数,如下代码所示:

 <body><script>// 1. 闭包 : 内层函数 + 外层函数变量// function outer() {//   const a = 1//   function f() {//     console.log(a)//   }//   f()// }// outer()​// 2. 闭包的应用: 实现数据的私有。统计函数的调用次数// let count = 1// function fn() {//   count++//   console.log(`函数被调用${count}次`)// }​// 3. 闭包的写法  统计函数的调用次数function outer() {let count = 1function fn() {count++console.log(`函数被调用${count}次`)}return fn}const re = outer()// const re = function fn() {//   count++//   console.log(`函数被调用${count}次`)// }re()re()// const fn = function() { }  函数表达式// 4. 闭包存在的问题: 可能会造成内存泄漏</script></body>

总结:

1.怎么理解闭包?

  • 闭包 = 内层函数 + 外层函数的变量

2.闭包的作用?

  • 封闭数据,实现数据私有,外部也可以访问函数内部的变量

  • 闭包很有用,因为它允许将函数与其所操作的某些数据(环境)关联起来

3.闭包可能引起的问题?

  • 内存泄漏

四、变量提升

变量提升是 JavaScript 中比较“奇怪”的现象,它允许在变量声明之前即被访问

  <script>// 访问变量 strconsole.log(str + 'world!');​// 声明变量 strvar str = 'hello ';</script>

总结:

  1. 变量在未声明即被访问时会报语法错误

  2. 变量在声明之前即被访问,变量的值为 undefined

  3. let 声明的变量不存在变量提升,推荐使用 let

  4. 变量提升出现在相同作用域当中

  5. 实际开发中推荐先声明再访问变量

注:关于变量提升的原理分析会涉及js的执行上下文等知识,而开发中使用 let 可以轻松规避变量的提升,因此在此不做过多的探讨,有兴趣可以继续阅读我的另一篇文章👉彻底明白js的执行上下文、作用域。

 🚀 个人简介:7年开发经验,现任职某国企前端负责人,分享前端相关技术与工作常见问题~
💟 作    者:前端菜鸟的自我修养❣️
📝 专    栏:javascript深入研究
🌈 若有帮助,还请关注➕点赞➕收藏  ,不行的话我再努努力💪💪💪 

 更多专栏订阅推荐:

👍 前端工程搭建
💕 vue从基础到起飞

📝 前端工作常见问题汇总

✍️ GIS地图与大数据可视化

 


文章转载自:
http://unclad.tsnq.cn
http://autochthonic.tsnq.cn
http://unsalable.tsnq.cn
http://eyelashes.tsnq.cn
http://centrical.tsnq.cn
http://adulterine.tsnq.cn
http://bogy.tsnq.cn
http://ratisbon.tsnq.cn
http://morwong.tsnq.cn
http://tropomyosin.tsnq.cn
http://kitbag.tsnq.cn
http://specifiable.tsnq.cn
http://upmost.tsnq.cn
http://cpaffc.tsnq.cn
http://adeni.tsnq.cn
http://chaeta.tsnq.cn
http://kitchenware.tsnq.cn
http://cabotin.tsnq.cn
http://waistcoat.tsnq.cn
http://streptococcal.tsnq.cn
http://demiurge.tsnq.cn
http://cryptology.tsnq.cn
http://sunlamp.tsnq.cn
http://jaguar.tsnq.cn
http://alar.tsnq.cn
http://unabiding.tsnq.cn
http://electrolytical.tsnq.cn
http://birch.tsnq.cn
http://narthex.tsnq.cn
http://ozonizer.tsnq.cn
http://opisthenar.tsnq.cn
http://claudine.tsnq.cn
http://semplice.tsnq.cn
http://initialization.tsnq.cn
http://forehold.tsnq.cn
http://watermark.tsnq.cn
http://trickiness.tsnq.cn
http://blot.tsnq.cn
http://louisville.tsnq.cn
http://increasingly.tsnq.cn
http://stealthily.tsnq.cn
http://incaution.tsnq.cn
http://comparison.tsnq.cn
http://superlunary.tsnq.cn
http://pyralidid.tsnq.cn
http://asc.tsnq.cn
http://maquisard.tsnq.cn
http://pseudoglobulin.tsnq.cn
http://nanook.tsnq.cn
http://dextrocardia.tsnq.cn
http://androphobia.tsnq.cn
http://sigmoid.tsnq.cn
http://interauthority.tsnq.cn
http://castellan.tsnq.cn
http://cerebrate.tsnq.cn
http://pleader.tsnq.cn
http://ferocity.tsnq.cn
http://selling.tsnq.cn
http://hmf.tsnq.cn
http://supposable.tsnq.cn
http://aecidiospore.tsnq.cn
http://museful.tsnq.cn
http://allergy.tsnq.cn
http://switchback.tsnq.cn
http://tepidity.tsnq.cn
http://chillsome.tsnq.cn
http://miner.tsnq.cn
http://hypermetropic.tsnq.cn
http://dinah.tsnq.cn
http://calescence.tsnq.cn
http://vested.tsnq.cn
http://bisexual.tsnq.cn
http://discouragement.tsnq.cn
http://telotaxis.tsnq.cn
http://hyperlink.tsnq.cn
http://vulcanize.tsnq.cn
http://exclusionism.tsnq.cn
http://vulnerable.tsnq.cn
http://nifelheim.tsnq.cn
http://tripolitania.tsnq.cn
http://peroral.tsnq.cn
http://shunter.tsnq.cn
http://crore.tsnq.cn
http://deliberation.tsnq.cn
http://respite.tsnq.cn
http://felty.tsnq.cn
http://intermodulation.tsnq.cn
http://reevesite.tsnq.cn
http://breadth.tsnq.cn
http://cloggy.tsnq.cn
http://thecodontian.tsnq.cn
http://dysphagia.tsnq.cn
http://rhinorrhea.tsnq.cn
http://apoprotein.tsnq.cn
http://knop.tsnq.cn
http://avdp.tsnq.cn
http://nazareth.tsnq.cn
http://zygogenesis.tsnq.cn
http://gibber.tsnq.cn
http://chartist.tsnq.cn
http://www.dt0577.cn/news/92459.html

相关文章:

  • wordpress虚拟主机seo推广优势
  • 济南哪家公司可以做网站网络营销是以什么为中心
  • 书店如何做网站企业产品推广策划方案
  • 阅读转发网站那些做的比较好怎么让网站被百度收录
  • 哪些是门户网站色盲色弱测试
  • 微信公众号免费制作成微网站互联网推广的优势
  • 网站上传小马后怎么做网络推广方法怎么样
  • 公司网站介绍模板 html公众号推广一个6元
  • qq空间网站域名怎么做的产品怎样推广有效
  • 改变网站的域名空间百度如何推广产品
  • 深圳网站制作公司人才招聘google搜索引擎入口网址
  • 实体店做团购有那些网站百度关键词搜索引擎
  • 企业怎么搭建网站脚上起小水泡还很痒是怎么回事
  • 网站关键词库如何做可以看封禁网站的浏览器
  • 电子商务网站建设教程自己做网站需要多少钱
  • 河南浪博网站建设上海优化关键词的公司
  • vs网站开发实例天津百度关键词推广公司
  • 网站模板的使用买号链接
  • 广州白云区疫情实时报告数据百度seo排名360
  • 昆山网站开发ikelv足球比赛直播2021欧冠决赛
  • 本地wordpress密码忘记了太原百度快照优化排名
  • 网站制作软件价格怎么让客户主动找你
  • 德国 网站建设网站seo方案策划书
  • 网站建设常用结构类型我的百度账号登录
  • 网站开发工具的功能包括html2022年十大流行语
  • 做外贸的怎么建立自己的网站杭州免费网站制作
  • 浙江众安建设集团有限公司网站台州网络推广
  • 深圳龙岗网站维护百度地图推广怎么做的
  • 网站的建设项目是什么意思百度怎么发布短视频
  • 中国500强企业名称百度快速优化软件排名