es语法
js声明变量的关键字有三个: var(es5)和let(es6)和const(es6)
他们三者的区别?
var是es5提出来的, let和 const是es6提出来的,其实let和const的区别主要是const定义的变量一定要在声明的时候被赋值,一旦赋值后面就不会改变!那么接下来我们只讨论var 和let之间的区别!
var定义的是函数作用域,在函数内部声明的变量函数外无法访问, 并且可以多次声明一个变量名;let定义的是块级作用域(if,for都会产生块级作用域),在块级作用域声明的变量函数外无法访问,不可以在作用域内多次声明一个变量名。
if(true){
var name = 'matt'
console.log(name)
}
if(true){ let name = 'matt' } console.log()
3. var 定义的变量会提升,如果在全局作用域下,会挂载到window上造成全局污染;let定义的变量不会提升,会进入暂时性死区,在let关键字声明前引用都会报错。
```js
// name 会被提升
console.log(name1) // undefined
var name1 = 'Matt'
console.log(window.name1) // 'Matt',全局环境下挂到window上
// age 不会被提升
console.log(age) // 报错 age没有被定义
let age = 18
`