let 和 const 命令

1、letjavascript

1.相似var, 但在let命令所在的代码块内有效。java

2.不存在变量提高。(必须先声明才能使用不然报错)es6

3.暂时性死区。(只要块级做用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,再也不受外部的影响。防止变量泄露)浏览器

4.不容许重复声明。函数

 

2、块级做用域与函数声明this

1.考虑到环境致使的行为差别太大,应该避免在块级做用域内声明函数。若是确实须要,也应该写成函数表达式,而不是函数声明语句。spa

// 块级做用域内部的函数声明语句,建议不要使用
{
  let a = 'secret';
  function f() {
    return a;
  }
}

// 块级做用域内部,优先使用函数表达式
{
  let a = 'secret';
  let f = function () {
    return a;
  };
}

2.ES6 的块级做用域必须有大括号code

 

3、const 命令对象

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

2.只在声明所在的块级做用域内有效。

3.一样存在暂时性死区。

5.不可重复声明。

6.扩展: 可使用 Object.freeze (待补充)方法冻结

 

4、ES6 声明变量的六种方法

ES5 只有两种声明变量的方法:var命令和function命令。ES6 除了添加letconst命令,后面章节还会提到,

另外两种声明变量的方法:import命令和class命令(待补充)。因此,ES6 一共有 6 种声明变量的方法。

 

5、顶层对象的属性

顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象。

1.ES5 之中,顶层对象的属性与全局变量是等价的。

2.ES6var命令和function命令声明的全局变量,依旧是顶层对象的属性;let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。

var a = 1;
// 若是在 Node 的 REPL 环境,能够写成 global.a
// 或者采用通用方法,写成 this.a
window.a // 1

let b = 1;
window.b // undefined

 

原文地址

相关文章
相关标签/搜索