- 变量:存储数据
声明变量的方式有三种:var let cost
Var 是声明变量的,它是es5中的
Let 和 const 是声明常量的,它是es6中新增属性
var 存在变量提升
let和const 不存在变量提升, 并且在当前作用域内不能再次声明; 在声明之前不能使用该变量( TDZ - 暂时性死区)
const声明的是常量, 只有声明的基本数据类型的时候 不可改变, 引用数据类型可以改变值
Var 存在变量提升:
var a = 1
console.log(a);
console.log(a);
var a = 1
console.log(a);
所以当变量只声明而未赋值的时候变量 === undefined
而当for循环中使用var:
for (var i = 0; i < 5; i++) {
console.log(i);
}
当使用异步操作时:
for (var i = 0; i < 5; i++) {
setTimeout(
function fn() {
console.log(i);
}
)
}
而let和const不存在变量提升:
let b = 1
console.log(b);
console.log(b);
let b = 1
console.log(b);
而当for循环中使用let:
for (let i = 0; i < 5; i++) {
console.log(i);
}
当使用异步操作时:
for (let i = 0; i < 5; i++) {
setTimeout(
function fn() {
console.log(i);
}
)
}