var和let区别

一、var的声明作用域:

使用var操作符定义的变量会成为包含它的函数的局部变量。比如,使用var在一个函数内部定义一个变量,就意味着该变量将在函数退出时被销毁。

function test() {    
	var message = "hi"; // 局部变量
	mess = "hi";     // 全局变量
} 
test()
console.log(message,mess)   // message报错,mess成功输出

二、var的声明提升:

关键字声明的变量会自动提升到函数作用域顶部,var重复声明也没有问题。

function foo() {    
	// var age  声明提升到了这里
	console.log(age);   
	var age = 26; 
} 
foo();  // undefined   这里不会报错,因为age的声明被提升.

三、let的声明作用域:

let与var最大的区别是,let声明的范围是块作用域,而var声明的范围是函数作用域。let不允许重复声明。
函数作用域 > 块作用域

// if是块作用域,非函数作用域,var出了块作用域不会被销毁。
if (true) {   
	var name = 'Matt';   
	console.log(name); // Matt 
	let age = 26;   
	console.log(age);   // 26
} 
console.log(name);   // Matt 
console.log(age);     // ReferenceError: age没有定义

四、let不存在声明提升(暂时性死区):

在let声明之前的执行瞬间被称为“暂时性死区”(temporal dead zone),在此阶段引用任何后面才声明的变量都会抛出ReferenceError。

console.log(message)     // 报错
let message = "hi"

本文链接:https://blog.csdn.net/qq_43145310/article/details/125737211
————————————————
版权声明:本文为CSDN博主「静止呀」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43145310/article/details/125737211

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值