javascript中var/let/const三者的区别总结

本文介绍了JavaScript中var、let和const三种变量声明方式的区别。var存在变量提升,允许重复声明,而let和const则更严格,let不允许变量提升,const定义后不可修改。推荐在编程时优先使用let,始终在作用域顶部声明变量。

1.var

var的使用较let自由,先初始化再定义变量、多次声明相同名称的变量并不会引起错误。

先初始化再定义变量的操作可行是因为var存在变量提升

由于变量声明(以及其他声明)总是在任意代码执行之前处理的,所以在代码中的任意位置声明变量总是等效于在代码开头声明。这意味着变量可以在声明之前使用,这个行为叫做“hoisting”。“hoisting”就像是把所有的变量声明移动到函数或者全局代码的开头位置。

举例:

console.log(a);		//undefined  
var a = 100; 

var声明的全局变量a会进行变量提升,即var a = 100;会被分解为var a;a=100;代码解析时会将var b;提升到最前面,并且在内存中开辟一个空间,由于a没有被赋值,默认为undefined。

console.log(a);		//Uncaught ReferenceError: a is not defined  
a = 100;  

而这段代码中,当js执行console.log()函数时没有进行var声明,变量没有被提升,不存在内存开辟,所以在console.log()时候直接报错。

2.let

let的用法类似于其他编程语言中的定义变量的用法,较var严格,不存在变量提升,若使用let,先初始化再定义变量、多次声明相同名称的变量将引起错误。

3.const

const声明的是常量,定义后无法修改。必须初始化,否则会报错。需要注意const定义的对象属性可以改变:

const person = {name:"jack", sex="male"};
person.name = "bob";	//可以正确修改

因为对象是引用类型的,person中保存的是对象的指针,修改对象的属性不会改变对象的指针,所以是被允许的。即:const定义的引用类型只要指针不发生改变,其他的改变都是允许的。

若修改指针,让person指向一个新对象,控制台报错:

const person = {name:"jack", sex="male"};
person = {name:"bob", sex="male"};
//报错:Uncaught TypeError: Assignment to constant variable.

另外,javascript属于动态类型语言,不需要指定变量将包含什么数据类型。如以下的操作是合法的:

let myNumber = '500'; 	//字符串类型
myNumber = 500; 		//数字类型

使用变量的建议:

1.尽量使用let而不是var

2.始终在作用域顶部声明变量(全局代码的顶部和函数代码的顶部)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值