let和const命令

本系列属于阮一峰老师所著的ECMAScript 6 入门学习笔记


let 命令
// let只在所在代码块内有效
{
  let a = 10
  var b = 1
}
a // Reference: a is not defined
b // 1

// 不存在变量提升
console.log(foo) // undefined
var foo = 2
console.log(bar) // ReferenceError
let bar = 2

// 暂时性死区:let声明的变量绑定这个区域,不再受外部影响
if(true){
  // TDZ开始
  tmp = 'abc' // ReferenceError
  console.log(tmp) // ReferenceError
  let tmp // TDZ结束
  console.log(tmp) // undefined
  tmp = 123
  console.log(tmp) // 123
}
var x = x // 不报错
let x = x // ReferenceError: x is not defined

// 不能重复声明
function func(){
    var a = 10
    let a = 1 // 报错
}

// 块级作用域:外层代码块不受内层代码块的影响
function f(){
  let n = 5
  if(true){
    let n = 10
  }
  console.log(n) // 5
}
const 命令

const声明一个只读变量,一旦声明,常量的值就不得改变,与let一样只在声明所在的块级作用域内有效,声明的常量不提升,存在暂时性死区,只能在声明后的位置使用,不可重复声明。

const命令的本质是常量存储的地址不可改变,即不能把常量指向另外一个地址,但是对象本身是可以变的。

const a = []
a.push('Hello') // 可执行
a.length = 0 // 可执行
a = ['Angus'] // 报错
// 可使用Object.freeze()冻结对象
ES6 声明变量的六种方法

结合ES5之后,目前我们声明变量有以下六种方法:varfunctionletconstimportclass

顶层对象的属性

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

var a = 1 // node的REPL环境可以写成global.a或者采用通用方法写成this.a
window.a // 1
let b = 1
window.b // undefined
posted @ 2017-10-16 16:28  coderAngus  阅读(146)  评论(0)    收藏  举报