function test(){
let a = 1
for (let i =0;i<3;i++){
console.log(i) //1,2
}
console.log(i) //error
console.log(a)
const app = 1
const data = { //对象是引用类型,最后返回的是对象存的指针,可以改变内部的值
a: 1
}
data.a = 3
console.log(app ,data.a) // 1 3
}
test() //1
es5中作用域有:全局作用域 ,函数作用域。没有块作用域的概念。
es6中新增了块作用域。块作用域由{}包括,if语句和for语句里面的{}也属于块作用域。
var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
const用来定义常量,声明的时候必须赋值,而且不能修改。若是对象是引用类型,最后返回的是对象存的指针,可以改变内部的值