ES6(一): let,const

let,const配合具有的特性

  1. 供应了代码块级作用域;(代码块是用{}来完成的)

  2. 不存在变量提拔,先声明再运用;

  3. 存在“暂时性死区”;

  4. 不许可反复声明;

“暂时性死区”。

ES6明确划定,假如区块中存在let和const敕令,这个区块对这些敕令声明的变量,从一最先就形成了关闭作用域。通常在声明之前就运用这些变量,就会报错。
在代码块内,运用let或许const敕令声明变量之前,该变量是不可用的,这就是“暂时性死区”。只要在块级作用域内存在let敕令,它所声明的变量就“绑定”在这个地区,不再受外部的影响。

    var tmp = 123;
    if(true){
        tmp = 'abc';//ReferenceError
        let tmp;
    }

在这个if的语句块内,tmp跟表面声明的tmp没有关系,所以这个时刻tmp相称因而一个新的变量。

“暂时性死区”意味着typeof不再是一个百分百的平安操作了

{
    typeof x;//ReferenceError
    let x;
}

不许可反复声明

let不许可在雷同作用域内,反复声明同一个变量。

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

const的注重点

const声明一个只读的常量,一旦声明,常量的值是不能转变的。然则const实际上保证的是变量指向的谁人内存地址不能修改,并非变量的值不能修改。

const foo = {};
//能够转变变量的值
foo.prop = 123;

foo = {};//报错

块级作用域与之前抵牾点(轻微晓得点就行)

块级作用域与函数声明
原本划定在块级作用域内,是不能有函数声明的。然则浏览器为了兼容之前的代码,所以是许可的。所以ES6在附录中划定,浏览器能够有本身的行动,以下的划定规矩只对ES6的浏览器完成有用,其他环境不必恪守

  • 许可在块级作用域内声明函数

  • 函数声明类似于var,即会提拔到全局作用域或许函数作用域的头部

  • 函数声明照样会提拔到地点块级作用域的头部

    原文作者:jyren_Rachel
    原文地址: https://segmentfault.com/a/1190000008601779
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞