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之后,目前我们声明变量有以下六种方法:var 、function 、let 、const 、import 、class
顶层对象的属性
顶层对象,在浏览器环境指的window 对象,在Node指的是global对象
var a = 1 // node的REPL环境可以写成global.a或者采用通用方法写成this.a
window.a // 1
let b = 1
window.b // undefined

浙公网安备 33010602011771号