javascript中var,let,const的区别

在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前端学习网站

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容