声明变量有三个关键字分别是:var,let,const
var 在ECMAScript的所有版本中都可以使用,let和const只能在ECMAScript6及以上版本使用
var 关键字
要定义变量可以使用var关键字
var variable;
//定义一个variable的变量,可以保存任何类型的值,不初始化的情况下会保存一个undefined
var声明作用域
使用var在一个函数内部定义一个变量,就意味着该变量在退出函数是被销毁。
function fun()
{
var variable = 'hello';
}
fun();
var变量提升
这段代码不会报错,那是因为ECMAscript运行的时候把他们看成了等价的,这就是变量提升(hoist)
function fun(){
console.log(name)
var name = 'lisi';
}
fun();
let关键字
let跟var大同小异,但是还是有很明显的区别,let声明的是块作用域,而var声明的范围是函数作用域
{
var name = 'lisi'
console.log(name) //lisi
}
console.log(name) //lisi
{
let firstName = 'zhangsan'
console.log(name) //zhangsan
}
console.log(name) //报错
firstName之所以不能在外部被引用是因为仅限于该内部
let也不允许在块作用域中重复声明
var fristName;
var fristName;
let lastName;
let lastName; //报错
const声明
const声明变量需要注意一下几点:
const name = "zhangsan"
name = 'lisi' //报错
const不允许重复声明
const name = 'zhangsan'
const name = 'lisi' //报错
const声明的作用域也是块