es6-ES6 的变量声明

  • A+
所属分类:Web前端
摘要

提前声明:此文章仅仅用于个人成长学习的记录。内容部分摘抄自:        一:https://github.com/qianguyihao/Web/tree/master/05-JavaScript%E4%B9%8BES6%E8%AF%AD%E6%B3%95

提前声明:此文章仅仅用于个人成长学习的记录。

内容部分摘抄自:

        一:https://github.com/qianguyihao/Web/tree/master/05-JavaScript%E4%B9%8BES6%E8%AF%AD%E6%B3%95

        二:阮一峰 | ECMAScript 6 入门。

        三:https://segmentfault.com/a/1190000020678240

ES6 的变量声明

  1:var、let 、const用来声明变量。

    1.1:var,定义全局变量( var 是 variable 的简写)。

    1.2:  let,定义局部变量,替代 var。

    1.3: const,定义常量(定义后,不可修改)。

  2:作用域:

     2.1:全局作用域

    ·  2.1.1:var在全局作用域中定义后自动赋值给window,可以使用`window.“”` 来获取出来,容易污染数据

     2.2:函数作用域 function() {}

     2.3:块级作用域 {}

  

  3:let 和 const 的特点【重要】

    3.0:赋值使用

        const命令声明常量后必须立马赋值

        let命令声明变量后可立马赋值或使用时赋值

    3.1:支持块级作用域  

    3.2:不存在变量提升

      解释:和暂时性死区有共同特定,变量不存在变量提升,都是需要先声明再使用

    3.3:禁止重复声明

      解释:在同一作用域中重复声明同一变量

    3.4:暂时性死区

      解释: 使用 let/const 声明的变量,会使区块形成封闭的作用域。若在声明之前使用变量,就会报错。

const name = 'qianguyihao';  function foo() {     console.log(name);     const name = 'hello'; }  foo(); // 执行函数后,控制台报错:Uncaught ReferenceError: Cannot access 'name' before initialization

/**
*  一共说明两个问题:
*  1:变量“name”在函数foo外部定义了的,在函数内部重新定义一个同名的“name”变量。函数会形成一个封闭的作用域,唯一的变量为函数内部中的“name”变量。如果没有在foo函数中再次定义“name”变量就不会报错了
* 2:这个不是重复声明变量,他们在不同的作用域中
*
*/

    相反"var"声明:存在变量提升、可以重复声明、不支持块级作用域