1.var
var 语句用于声明变量。
JavaScript 变量的创建也叫作"声明"一变量:
var name;
变量声明后,变量为空 (没有值)。
为变量赋值,操作如下:
name = "zhangsan";
声明变量时,你同样可以为变量赋值:
var name = "zhangsan";
可以在一个语句中声明多个变量。
语句以 var 开头,变量以英文逗号分开:
var name = "zhangsan",
age = 30,
job = "worker";
2.Let
1)let声明的变量拥有块级作用域
{
let a=1;
}
console.log(a);
//Uncaught ReferenceError: a is not defined
2)let声明的全局变量不是全局对象的属性
var a=1;
console.log(window.a);//1
let b=2;
console.log(window.b);//undefined
3)let不能重定义变量
var a=1;
var a=2;
console.log(a);//2
let b=3;
let b=4;
console.log(b);//Identifier 'b' has already been declared
4)let声明的变量不会进行变量提升
function test(){
console.log(a);//undefined
var a=1;
}
test();
等价于
function test(){
var a;
console.log(a);//undefined
a=1;
}
test();
function test(){
console.log(b); //Cannot access 'b' before initialization
at test
let b=2;
}
test();
var定义的变量进行了变量提升,两个函数等价,let定义的变量则不能用于变量提升。
3.Const
const除了具有let的块级作用域和不会变量提升之外,还有两个特点:
1)在用const定义变量后,不能再修改值,否则会抛出异常。
const PI=3.14;
PI=5;
//Assignment to constant variable.
2)const声明的变量必须要初始化,否则会抛出异常。
const PI;
//Missing initializer in const declaration