ic_man

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ECMAScript6 块级作用域详解

一、杂谈

  在ECMAScript之前,是没有块级作用域这一说的。只有下面两种作用域:

    1、全局作用域

    2、局部作用域

  这两种作用域的存在,导致了javascript‘变量提升’。那么到底什么是变量提升呢,接着看代码吧!

function test1(){
  console.log(a);
  var a = 1;
}
test1();  // Undefined

   上面为什么是输出Undefind呢,原因就是变量提升,让我们在看一段代码!

function test2(){
    var a;
    console.log(a);
    a = 1;
}
test2();  // Undefined

   显然上面输出的也是Undefined。test1中,局部变量a的变量提升,在进入test1函数时,就自动定义了变量a并给他赋予了Undefined的值,如test2函数。变量提升造成许多不合理场景。所以ES6在这基础上添加了块级作用域的概念,但是不影响var声明的变量。

   下面,让我们体验ES6的块级作用域,let和canst走起。。。

posted on 2017-06-06 09:58  ic_man  阅读(342)  评论(0)    收藏  举报