美文网首页
ES6: let和const命令

ES6: let和const命令

作者: Yin先生 | 来源:发表于2019-01-12 00:50 被阅读0次

let命令(声明变量)

1.不存在变量提升

// var的情况
console.log(foo);    //输出undefined
var foo = 2;
// let的情况
console.log(bar);    // 报错ReferenceError
let bar = 2;

在以上代码中,用var声明的变量会发生变量提升,即脚本运行时变量foo便已经存在,但是没有值,所以会输出undefined。 变量bar用let命令声明则不会发生变量提升。这表示在声明它之前,变量bar是不存在的,用let声明的变量一定要在声明之后使用,否则便会报错,这就是为什么它不存在变量提升的这个问题。

2.暂时性死区

ES6明确规定,如果块区中存在let和const命令,则这个块区对这些命令声明的变量从一开始就形成了封闭作用域,只要在声明之前就使用这些变量,就会报错。
总之,在代码块内,使用let声明变量之前,该变量都是不可用的。这在语法上称为“暂时性死区”。
暂时性死区本质:只要进入当前作用域,所要使用的变量就已经存在,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

3.不允许重复声明

let不允许在相同作用域内重复声明同一个变量。

// 报错
function () {
  let a = 10;
  var a = 1;
 }
// 报错
function () {
    let a = 10;
    let a = 1;
  }

不能在函数内部重新声明参数

function func (arg) {
    let arg;  // 报错
    }
function func (arg) {
  {
    let arg;  // 不报错
  }
}

4.ES6的块级作用域

let实际上为JavaScript新增了块级作用域。
下面代码表示外层代码块不受内层代码块的影响。

function () {
  let n = 5;
  if (true) {
    let n = 10;
  }
console.log(n);    // 5
} 

ES6允许块级作用域的任意嵌套,但是外层作用域无法读取内层作用域的变量。

{{{{
  { let insance = 'Hello World' }
  console.log(insane);  // 报错
}}};

内层作用域可以定义外层作用域的同名变量。

{{{{
  let insane = 'Hello World';
  { let insane = 'Hello World' }
}}}};

相关文章

  • ES6之 let 和 const 命令

    ES6 之 let 和 const 命令 1、let 命令 1.1、基本用法 ES6 新增了let命令,用来声明变...

  • ES6中的let和const命令

    ES6中的let和const命令 let命令 ES6 新增了let命令,用来声明变量。它的用法类似于var,但是...

  • es6总结一

    es6基础 let和const命令 let和const用于声明变量let跟var的区别 1、let定义过的变量不能...

  • ES6笔记

    let 和 const ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一...

  • ES6语法总结(一)变量的声明

    一:let和const命令 1.let命令 (1) ES6新增了let命令,用来声明变量。用法类似于var,但是声...

  • let和const命令

    es6标准入门 第2章 let和const命令 2.1 let命令 2.1.1 基本用法 let用来声明变量,但所...

  • ES6 学习笔记-let

    let 和 const 命令 1. let命令 基本用法 ES6 新增了let命令,用来声明变量。它的用法类似于v...

  • let和const命令

    ES6学习 let和const命令 1. let命令 基本用法let命令,用来声明变量。他的用法类似于var,只在...

  • 无标题文章

    let和const命令 let命令 基本用法 ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声...

  • 第1章ES6初步

    目标 ES6简介 ECMAScript 和 JavaScript 的关系 let命令 块级作用域 const命令 ...

网友评论

      本文标题:ES6: let和const命令

      本文链接:https://www.haomeiwen.com/subject/nigfdqtx.html