ES6中块级作用域的案例分析

  介绍

这篇文章主要介绍了ES6中块级作用域的案例分析,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

<强>全局作用域和函数作用域

在ES5中,只全局作用域和函数作用域。这会导致函数作用域覆盖了全局作用域,亦或者循环中的变量泄露为全局变量。

例如:

//1。函数作用域覆盖了全局作用域,发生了变量提升,函数声明大于var声明的变量,因此函数里面一提的到了前面,在打印,初始化一个未定义的给一个,所以打印出了定义。
  var=& # 39; 1 & # 39;;
  函数fn () {
  console.log(一个);
  如果(3 & lt; 2) {
  var=3;
  }
  }
  fn ();//定义//2 .循环中的变量泄露为全局变量
  (var i=0; i<5,我+ +){
  console.log(我);
  }
  console.log(我);//5;

<强> ES6的块级作用域

用让命令新增了块级作用域,外层作用域无法获取到内层作用域,非常安全明了。即使外层和内层都使用相同变量名,也都互不干扰。

//1。外层作用域无法获取到内层作用域
  函数fn1 () {
  让一个=41;
  如果(1)==1){
  让=3;
  console.log (2);//2 3
  }
  console.log (1);//1 41
  }
  fn1 ();
  
  {
  {
  让食物=& # 39;苹果# 39;;
  }
  console.log(食物);//未捕获ReferenceError:食物是没有定义的
  }
  
  {
  {
  让食物=& # 39;苹果# 39;;
  }
  console.log(食物);//未捕获ReferenceError:食物是没有定义的
  }//2。外层和内层都使用相同变量名,也都互不干扰
  {
  {
  让食物=& # 39;苹果# 39;;
  console.log(食物);//苹果
  }
  让食物=& # 39;橙色# 39;;
  console.log(食物);//橙色
  }

<强>块级作用域和和函数声明

在ES5中,函数只能在顶级作用域和函数作用域中声明,不能在块级作用域中声明。但是在ES6中,函数可以在块级作用域中声明。

但是会有一定的问题,因为函数声明会被提到代码的最前面。所以会报错,最好在ES6中用函数表达式来表示一个函数。

例如:

//1。函数声明报的错   {   如果(4 & lt;2){   函数fn () {   console.log(& # 39;我在函数里面! & # 39;);   }   }   }   fn ();//未捕获TypeError: fn不是一个函数//2 .函数表达式没错   {   让足总=& # 39;111 & # 39;;   让fn=function () {   console.log(& # 39;我在函数里面! & # 39;);   }   console.log (fa、fn);//111 ?(){console.log(& # 39;我在函数里面! & # 39;);}   }

<>强注意: ES6中允许函数在块级作用域中可以声明的条件是必须在大括号里面,否则就会报错。

//1。报错的情况
  如果(4祝辞;2){
  让fn=function () {};
  }//2 .报错的情况
  如果(4祝辞;2)
  让fn=function () {};//未捕获SyntaxError:词汇不能出现在一个单独的语句声明上下文

感谢你能够认真阅读完这篇文章,希望小编分享ES6中块级作用域的案例分析内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!

ES6中块级作用域的案例分析