var、let、const

var:全局变量作用于全局作用域,任何地方都可以直接使用(如果声明在函数内部的话就是属于函数作用域内的了,外部无法直接使用),不管是哪个作用域,全局变量都存在一个问题就是变量提升。这样就会造成最后得不到任何的值的一个结果,只有一个undefined。因此使用var声明全局变量的时候,需要将var声明的变量放在最前面,防止因为顺序的问题而导致拿不到相对应的结果。

console.log(a); // undefined  ===>  a已声明还没赋值,默认得到undefined值var a = 100;
console.log(b); // 报错:b is not defined  ===> 找不到b这个变量
let b = 10;
console.log(c); // 报错:c is not defined  ===> 找不到c这个变量
const c = 10;

let:局部变量,用于局部作用域(块级作用域),不存在变量提升,如上代码一样,如果声明顺序有错误的话那么就直接报错,而不是像var一样是个undefined值。使用let声明的变量只能在当前块( { 一个块 } )内使用,外部是无法使用的。再者let不允许声明同一个变量,如:

{var a;let a;    // error}
{let a=1;let a;  //error}

const:与let一样,但是比let多了一项就是,const声明的变量是只读的,不可以直接对变量进行修改,如果修改就会直接报错。如:

const a = 111
a = 222   //error

总结:使用let和const有如下几点好处
1.内层变量覆盖外层变量
2.避免用来计数的循环变量泄露为全局变量
3.引入了块级作用域,允许在块级作用域之中声明函数
so个人建议在无殊需求的话尽量使用let和const,这样也可以避免全局变量过多从而造成这些变量无法被垃圾回收机制回收,最终造成内存泄漏的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值