范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Js基础27作用域

  函数和变量的有效范围就是作用域
  1、作用域的概念  var a = 10;  function f1(){    console.log(a);  }  f1();// 变量a在函数外定义,可以在函数内使用    function f2(){    var b = 20;  }  console.log(b); // 变量b在函数内定义,在函数外无法访问,报错:b is not defined
  这是因为js中存在作用域的概念。
  作用域:
  作用域就是指定一个变量或者一个函数的作用范围。
  能在页面的任何位置都可以访问,称为 全局作用域
  只能在局部(函数内)访问,称为为 局部作用域
  在全局作用域下声明的变量,称为 全局变量
  在局部作用域下声明的变量,称为 局部变量
  上述代码中,a是全局变量,b是局部变量
  ES5中只有函数才有作用域,所谓是局部作用域也可以叫函数作用域。
  作用域的作用就是为了把数据进行保护,不让外部的数据对我们的数据进行污染
  2、函数和变量声明的提升
  在JS中存在一个很重要的特性,函数和变量声明的提升。怎么理解声明提升呢?我们先来看一道面试题:
  以下①②③④打印什么? console.log(a);//①  var a = 123;  console.log(a);//②    console.log(f);//③  f();//④  function f() {      console.log("函数声明提升");  }
  ①处的代码如果按照我们以前的理解,代码从上而下执行,那么在执行这行代码的时候,a还没有被声明,所以直接访问一个没有被声明的变量,程序应该报错。
  但是结果却大出所料,这里得到的结果是undefined。
  ③处的结果也和我们最初的认识是不一样的,结果为f对应的函数对象。
  造成这个结果是因为变量和函数的作用域提升的原因,什么意思呢?
  JS是解释性语言,JS引擎对代码的处理分为两步:预解析处理: 在代码执行之前,对代码做全局扫描,对代码中出现的变量和函数提前声明处理;   // 上面代码预解析后会变成这样:
  var    a  ; //变量提前声明,但不初始化
  //函数提前声明
  function    f  () {
  console  . log  ( "函数声明提升"  );
  }
  console  . log  ( a  ); //undefined
  a    =    123  ;
  console  . log  ( a  ); //123
  console  . log  ( f  ); //函数对象
  f  (); //函数声明提升   调用执行: 然后自上而下的执行代码
  3、声明提升的规则
  声明提升是将变量或者函数的声明提升到当前作用域的最顶端。在具体使用的过程中存在以下需要注意的细节。变量和变量同名,解析之后只存在一个当前变量的声明。   console  . log  ( a  );
  var    a    =    123  ;
  console  . log  ( a  );
  var    a    =    456  ;
  console  . log  ( a  );  解析之后:   var    a  ;
  console  . log  ( a  ); //undefined
  a    =    123  ;
  console  . log  ( a  ); //123
  a    =    456  ;
  console  . log  ( a  ); //456   函数和函数同名,后面的声明将前面的覆盖。   f  ();
  function    f  () {
  console  . log  ( "1"  );
  }
  f  ();
  function    f  () {
  console  . log  ( "2"  );
  }
  f  ();
  function    f  () {
  console  . log  ( "3"  );
  }  解析之后:   function    f  () {
  console  . log  ( "3"  );
  }
  f  (); //3
  f  (); //3
  f  (); //3   函数和变量同名,只有函数声明提升,忽略变量的声明。   console  . log  ( a  );
  var    a    =    123  ;
  console  . log  ( a  );
  function    a  () {}
  console  . log  ( a  );
  function    a  () {}
  console  . log  ( a  );  解析之后:   function    a  () {}
  console  . log  ( a  ); //函数a
  var    a    =    123  ; //将前面的函数覆盖,a的值变为123
  console  . log  ( a  ); //123
  console  . log  ( a  ); //123
  console  . log  ( a  ); //123   如果是命名函数,则只将前面的变量声明提升,函数不动。   console  . log  ( fn1  );
  function    fn1  () {
  }
  console  . log  ( fn1  );
  console  . log  ( fn2  );
  var    fn2    =    function   () {
  }
  console  . log  ( fn2  );  解析之后:   function    fn1  () {
  }
  var    fn2  ;
  console  . log  ( fn1  ); //fn1函数
  console  . log  ( fn2  ); //undefined
  fn2    =    function   () {
  }
  console  . log  ( fn2  ); //fn2函数
  其他问题   var    a    =    b    =    c    =    9  ; // 从右往左赋值
  // 不适用var 声明变量 不管在哪里都是全局变量
  function    fn  (){
  a    =    10  ;
  }
  4、作用域链和访问规则
  在JavaScript里面,函数内部是可以包含另一个函数的 function a(){      function b(){         }    }
  此时函数b就被函数a包含越来了,这样就形成了两层作用域。
  如果有以下代码:三个同名变量放在三个作用域内 var x = 10;  console.log(x);  function a(){    var x = 20;    console.log(x);    function b(){      var x = 30;      console.log(x);   }    b();  }  a();
  会依次输出:10,20,30
  虽然多个变量x同名,但是不同作用域内优先使用自己内部作用域的变量x。
  如果代码做一下修改:删除函数b的局部变量x var x = 10;  console.log(x);  function a(){    var x = 20;    console.log(x);    function b(){      console.log(x);   }    b();  }  a();
  依次输出:10,20,20
  函数b内部没有变量b,会向自己的外面的作用域查找x变量,函数a内的x变量离函数b最近,会优先得到函数a的变量x
  代码再做修改:再删除a的局部变量x var x = 10;  console.log(x);  function a(){    // 函数a内部的变量x也没有了    console.log(x);    function b(){      // 函数b内部没有x变量了      console.log(x);   }    b();  }  a();
  会依次输出:10,10,10
  函数b内部没有x变量,会向函数a的作用域查找,但是函数a内部也没有x变量,会向函数a的上一层作用域再查找,直到查找到了全局作用域。
  代码再次变化:全局的变量x也删除 // 全局的变量x也没有了  function a(){    // 函数a内部的变量x也没有了    function b(){      // 函数b内部没有x变量了      console.log(x);   }    b();  }  a();
  函数b内部没有变量x,会顺着上层作用域一层一层地查找,直到全局作用域也没有,就会报错。
  总结:只有函数可以制造作用域链结构 只要是代码,就至少有一个作用域,即全局作用域。 凡是代码中有函数,那么这个函数就构成另一个作用域。 如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域。 将这样的所有的作用域列出来,可以有一个结构:函数内指向函数外的链式结构——作用域链。 由内而外的访问规律,一直向外找,找不到,报错。

奥睿科WH100固态硬盘评测国风与科技的碰撞近两年随着闪存技术的突飞猛进和闪存颗粒的降价,固态硬盘的价格已经被打下来了,以前能买128G的价格现在已经可以买512甚至1T的固态硬盘了,虽然机装固态硬盘现在可以唾手可得,但是人盲插快充通通有的插座你见过吗?插座在日常生活中随处可见,随着数码产品和电器产品的多样化,需要适配各种各样的插头和充电协议,如果还继续使用传统的板状插座,需要另外购买适配器。上次正好有机会体验摩天轮(18W)PD南卡骨传导耳机Runner深度体验运动怎能少了音乐前言现在不管是蓝牙耳机还是线控耳机,大部分都是入耳式耳机,入耳式的唯一缺点就是戴久了耳朵会出现肿胀感,同时又为了满足运动健身人群运动过程中不易脱落的需求,市面上就出现了一些头戴式和奥睿科IV300固态硬盘评测这款固态硬盘居然只有U盘大小说起固态硬盘,消费者的第一反应就是传输速度快,其次就是固态硬盘一般是装在台式或者笔记本上的。对于长期使用U盘传输文件的用户来说,也希望将固态硬盘高速的读写速度优势移植到U盘,但是固无线电贰厂虎啸手机体验这也许是一款值得买的功能机在智能手机普及的今天,中国仍有近2亿老人没有接触过网络,更别谈是使用智能手机了,所以功能机仍然有较大的缺口市场。但是随着智能手机的冲击,功能机品牌越来越少,给老人们挑选功能的选择也能做到颜值与速度并存的固态也许只有这一款经过不到十年的发展,固态硬盘的读写速度已经能够满足绝大数的传输需求了,所以用户又开始产生了新的需求,希望固态硬盘在便携性方面做到U盘那样,但目前还没有任何一款固态硬盘既保证了读写速ORICO晶锐系列7口USB3。0集线器体验独立控制传输快在我们日常生活中,USB设备多之又多,但是每台笔电或者台式就那么几个USB接口,想必大家也都经历过一个场景每次大学交电子课时作业时,都是一个一个同学往老师电脑拷贝作业,几乎拷作业占九州风神DQ850V2L电源体验全日系电容加量不加价在上个月入手的九州风神DQ750ST电源,其拥有10年质保80PLUS金牌高效转换全日系电容智能控温静音风扇LLC半桥谐振DCDC同步整流多重保护全电压线材长度平均无故障待机120XTARET4S电池充电套装体验携带方便,续航持久5号电池与7号电池是我们日常生活中必不可少的干电池,但是通常我们用的电池都是用完即弃的,大多数人根本没有环保意识,都不经过处理,然后直接扔到了垃圾箱,这次非常有幸拿到了XTARETSOTHING向物烘鞋器零体验湿鞋在脚,我有向物烘鞋器想必大家都经历过雨天湿鞋的场景,湿漉漉的鞋穿在脚上一天,晚上回家后,脚都被泡白了,为了舒适,好多人特别喜欢穿针织网眼鞋,其实这种鞋在雨天特别容易吸水,使得沾满水渍的鞋子特别重,而向奥睿科(ORICO)八合一扩展坞体验接口多,传输速度快在日常生活中经常会遇到U口不够的情况,这是U口分线器便成了U口扩展的重要工具,但是U口分线器的功能又过于单一,许多厂商在U口分线器的基础上又增加了HDMIPD充电SD卡读取TF卡读
每周全球科技十大新闻(2021。6。76。14)缺芯风在继续新闻摘要1)超越梦想,Zoom成为云厂商香饽饽2)告诉你一个芯片涨价的真相,原来都是为他们做嫁衣3)感觉对不传统汽车厂商未来的方向就是ODM?4)Oracle数据库仍然获得中国邮政每周全球科技十大新闻(2021。6。1420)美国核能开放支持矿工NEWS(2021。6。146。20)新闻摘要1)美国波士顿动力80股份并入现代汽车的囊中2)2021年凯度BrandZ全球最具价值品牌TOP103)深圳大铲湾企鹅岛开工,腾讯全球摄影还是拍照有必要划分吗?(黄果树景观分享)风光摄影必须要走出去,要么自驾,要么自由行,有时候还要跟团游。摄影有时候受地点时间天气环境的限制,根本拍不出来好片,不过摄影不是出大片才叫摄影。什么叫摄影,摄影的英文叫photog手机SnapseedAPP怎么完美修整人像在电脑上各种修人像软件应有尽有,在手机上也不少,但是缺少系统的方法,而且很不直观。手机修图Snapseed给大家提供了一个非常好用的修人像流程,只是许多人不知道如何下手,今天我就与手机修图Snapseed中应该掌握的技巧现在无论是相机还是手机都有很好的调整手段,随随便便就可以拍出相当不错的摄影大片,即便如此还是离不开后期软件的修饰,给自己一个满意的结果。Snapseed是一款人人皆知的手机修图软件手机修图Snapseed高级应用创意海报手机APPSnapseed的功能很多,但有些功能字面上是没有的,需要不断开发,谁能把Snapseed玩废了,谁就是高手。在Snapseed中使用最多的工具是调整图片和图层蒙版,可有如何使用Snapseed给荷花实施艺术渲染相机有多重曝光,但操作起来比较麻烦,一般人都不会去使用。许多人都喜欢使用手机修图,因为方便快捷,容易掌握。今天跟大家说一说如何使用Snapseed给相片实施艺术加工。不一样的方法,华为P30价格开启ampampquot跳水ampampquot模式,网友感叹买早了华为手机可以说是国产手机的龙头老大,之前的中华酷联,现在也只剩下华为依然坚挺了。根据IDC的数据,华为在2019年中国市场份额达到了42。可见,华为在国内是很受欢迎的。现在有华为的各种类型的磁盘阵列都有什么特点?常见RAID模式详解磁盘阵列相信大家并不陌生,它是个人与企业存储数据的优良选择。磁盘阵列也分为很多种类型,有RAID0RAID1RAID5等。今天小赵就来介绍一下比较常用的磁盘阵列特点。在介绍常用RA智身西境,新疆最妙的几处风景都在这了从乌鲁木齐开始,我们开着新一代智跑,进入了崭新的征程。十二木卡姆西域三十六国,乌孙龟兹楼兰车师大月氏这些耳熟能详的古国,几近淹没在历史的罅隙中,而我们此趟,便是将其一一寻觅。赛里木长期使用ECO模式,并不会导致积碳的产生ECO模式主要通过调整油门踏板特性变速箱升降挡逻辑,来避免不必要的转速增高,从而减少燃油喷射量也降低了发动机的摩擦功损耗,来实现省油从本质上看,ECO模式只是改变了发动机动力输出特