在javascript中,var,let,const是用于声明变量跟常量的(const),,那么现在来看看这三个关键字有什么区别吧。
一,var
1,在ES6出来后,var声明的变量一般是用于当作全局变量,我们可以在浏览器通过window对象获取变量值。
var num = 10;
console.log(window.num)//输出10
2,var关键字拥有变量提升的特殊性
console.log(num);//输出undefined
var num = 25;
之所以会输出undefined,是因为js在编译过程中,会将var关键字提前声明,上述代码就相当于下列。
var num;
console.log(num);
num = 25;
3,使用var声明同名称的变量,后者会覆盖前面的赋值。
var t = 5;
var t = 10;
console.log(t)// 10
4,var如果在函数里面声明,则该变量为局部变量。
var a = 20;
function num() {
var a = 45;
console.log(a); // 45
}
num();
console.log(a) // 20
二,let
1,let是ES6中新增的变量声明关键字,与var不同的是,它没有变量提升这个问题。
console.log(num);//ReferenceError
let num = 25;
2,let在同一作用域不能够声明同一变量。
let t = 23;
let t = [1,2];
3,在函数中,不能够重新声明参数。
function jun(age) {
let age;
}
三,const
1,const是声明一个只读常量,无法进行修改。
const num = 10;
num = 15;
//TypeError: Assignment to constant variable.
2,const声明后必须进行初始化,否则报错。
const b;
// SyntaxError: Missing initializer in const declaration
另外,var,let声明过的变量,在用const声明也会报错,自身声明过的也一样。
3,const保存的其实是变量指向的内存地址保存的值不变。
而对于复杂类型的数据,const只能保证指向实际数据的内存地址是对的,而无法保证其数据结构是否会发生变化。
const top = {};
top.t = 546;
console.log(top.t) // 546
top = {};
//指向另一个对象,就会报错
现在大部分开发基本上都是能用const,就用const,再则就是let,其次就是var。
文章来自web前端学习网站