美文网首页
ES6 中let const

ES6 中let const

作者: c6e71129966d | 来源:发表于2018-03-29 15:21 被阅读0次

let 

存在块级作用域

(1)外层作用域取不到内层作用域的变量

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

所声明的变量,只在let命令所在的代码块内有效

if(true){

let a = "123";

console.log(a);  //123

}

console.log(a);       //ReferenceError  a is not undefined

for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域

for(let i=0;i<3;i++){

    let i='abc';

    console.log(i);

}

// abc// abc// abc

上面代码正确运行,输出了 3 次abc。这表明函数内部的变量i与循环变量i不在同一个作用域,有各自单独的作用域。


不存在变量提升:在变量声明之前使用,都是会报错的。以前的var声明的变量可以变量提升,在变量声明之前使用,值为 undefined。但是使用let声明的变量,一定要在let声明之后


 暂时性死区:在代码块(块级作用域)内存在let命令它所声明的变量,就“绑定”这个区域,不再受外界影响。

例子:

var temp = 123;

if(true){

    temp = 'aaa';      //Reference Error

    let temp;

}

因为在块级作用let 声明了一个局部变量,导致这个变量绑定了这个块级做哟用于,所以在let声明变量之前,对temp 赋值会报错。  (代码块内,使用let命令声明变量之前,该变量都不可用)

~~~~~~~~~~~~~~~~~分割线~~~~~~~~~~~~~

在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)

if(true){

// TDZ开始

tmp='abc'; // ReferenceErrorconsole.log(tmp); // ReferenceError

let tmp; // TDZ结束console.log(tmp); // undefinedtmp=123;console.log(tmp); // 123}


不允许重复声明

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

// 报错

functionfunc(){

        let a=10;

        var a=1;

}

// 报错

function func(){

        let a=10; 

        let a=1;

}

function func(arg) {

        let arg; // 报错

}

function func(arg) {

    {

        let arg; // 不报错

    }

}


const

声明一个只读的常量。一旦声明,常量的值就不能改变。

const一旦声明就必须立即初始化,不能留到以后赋值

与let相同的是:

        只在声明所在的块级作用域内有效

        有暂时性死区(必须在声明之后才能使用)。

        const命令声明的常量也不能提升。

        const声明的常量,不可重复声明。

相关文章

  • ES6(let 与 const)

    ES6中引入了let 和 const来声明变量,我们来看下let 和 const 的使用 一、let let定义的...

  • es6常用语法

    const 和 let 在es6语法规范中,尽量使用let替代var,如果在const 和let中选,优先使用co...

  • js 中声明常量关键字 var、let、const

    js 中声明常量的关键字:var、let、const,其中 let 和 const 是 ES6 中新增的关键字。 ...

  • (JS)

    ES6 let、const和var的区别 let和const声明变量不存在变量提升 let和const不能重复声明...

  • ES6中的let和const命令

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

  • js 变量提升(3)

    ### ES6中let创建的变量不存在变量提升 /* * 在ES6中基于let或者CONST等方式创建变量或者函数...

  • es6,es7,es8语法总结

    ES6 1. var let const let,const具有块级作用域,不具有变量提升 const 用...

  • ES 6 7 8 随笔 QAQ

    ES6 1. var let const let,const具有块级作用域,不具有变量提升 const 用...

  • ES6笔记

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

  • react 入门基础(一)之ES6

    ####ES6 let const var 三者的区别 ### 1. let const 不能重复声明变...

网友评论

      本文标题:ES6 中let const

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