介绍
这篇文章主要介绍了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中块级作用域的案例分析内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!