2021-01-30

JavaScript-作用域

作用域有:全局作用域和局部作用域

var  除了函数的{}之外,其他地方都不会认为是子作用域
let   在任意{ }里面,如果用的是let关键词定义的变量,那么这个{}视为一个子作用域,在for的()里面,用let定义变量,视为子作用域.

Var的解析

1. 定义 -- 找出变量   (找当前作用域所有的 var、function 两个关键词定义出来的变量)
2. 执行 -- 从上到下,执行代码  (取值,就近原则,当前作用域有值就取当前,没有就取父级)

举例说明如下:

 var x = 5; a(); function a(){  alert(x);  var x = 10; } alert(x); /* * 1. 定义 * 15:var x; * 17-20: function a(){...} * * 2. 执行 * 15: x=5; * 16: a(); ==子作用域==> 1. 定义 *        19: var x; *       2. 执行 *        18: alert(x); //undefined *        19: x = 10;(改变的是自己作用域的x) * 21: alert(x); //5 * * * */

重名注意事项(var,function,let)

1.  let  :同作用域下,let 不允许重名
2.  var 与 function 可以重名   

注  :1.var var重名,就当成同一个变量来看   
  2.  function function重名,以最后面的对准.   
  3.   var function重名,(1.定义)过程中,以function为准   
  4.  执行后重新赋值,以赋值的值为准
 

举例说明如下:

 alert(a); var a = 10; alert(a); function a(){alert(20)} alert(a); var a = 30; alert(a); function a(){alert(40)} alert(a); /* * 1. 定义 * 22: function a(){alert(40)} * * 2. 执行 * 15: alert(a); // 打印函数体function a(){alert(40)} * 16: a = 10; * 17: alert(a); // 10 * 19: alert(a); // 10 * 20: a = 30; * 21: alert(a); // 30 * 23: alert(a); // 30 * * */

闭包

 含义:  函数里面嵌套一个函数,内部函数使用了外部函数的参数/变量,形成闭包.
      在一个作用域中包含一个作用域,子作用域使用了父作用域的 参数/变量 ,形成闭包.
 

举例说明如下:

 (function(){  let a = 10;  document.onclick = function(){  a ++;  console.log(a);  }; })();/*  function a(){  let x = 20;  return function() {  x ++;  console.log(x);  } } let b = a(); *//*  b(); b(); b(); b(); b(); let c = a(); c(); c(); c(); c(); c(); */

 





 








原文转载:http://www.shaoqun.com/a/521173.html

跨境电商:https://www.ikjzd.com/

acca是什么:https://www.ikjzd.com/w/1370

海淘贝:https://www.ikjzd.com/w/1726


作用域有:全局作用域和局部作用域var除了函数的{}之外,其他地方都不会认为是子作用域let在任意{}里面,如果用的是let关键词定义的变量,那么这个{}视为一个子作用域,在for的()里面,用let定义变量,视为子作用域.Var的解析1.定义--找出变量(找当前作用域所有的var、function两个关键词定义出来的变量)2.执行--从上到下,执行代码(取值,就近原则,当前作用域有值就取当前,没
olive:olive
eprice:eprice
Qoo10:Qoo10
警惕!旺季侵权高发,这款爆款产品要当心!:警惕!旺季侵权高发,这款爆款产品要当心!
Vestiaire Collective:Vestiaire Collective

No comments:

Post a Comment