js变量

30 阅读1分钟

es语法

js声明变量的关键字有三个: var(es5)和let(es6)和const(es6) 他们三者的区别? var是es5提出来的, letconst是es6提出来的,其实letconst的区别主要是const定义的变量一定要在声明的时候被赋值,一旦赋值后面就不会改变!那么接下来我们只讨论varlet之间的区别!

  1. 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
`