ES6-let,const解析

我们先看看ES5中var变量的缺点

  • var会使变量提升(即下面声明的上面也可以使用)
	console.log(a);
	var a = 10;
  • 变量可重复定义,也不会报错
	var a = 10;
	var a = 20;
  • var声明的变量会挂载到window上,会使window上的方法失效
	var name = 20;
	console.log(window.name);
  • 方法内的变量未经声明立即使用,也会挂载到window上
   function print(){
   	a  = 30;
   }

ES6-let 解析

  • let的优点
    1.没有变量提升(即变量必须声明了才能使用)
	console.log(a);//这里会报错,显示a未定义
	let a = 20;
  1. 不能重复定义(重复声明会报错)
	let a = 20;
	let a = 30;//a is already delcare!
  1. 不会挂载到window上(不会影响到window上的方法)
let name = 20;
console.log(window.name);//undefined;
  1. 可以解决闭包的问题

此处形成了闭包,所以导致function拿到的i是同一个,所以每次打印的都是10

	var arr = [];
	for(var i = 0; i < 10; i++){
		arr.push(function(){
			console.log(i);
		})
	}
	arr[1]();//10
	arr[2]();//10

解决方案:将var的变量i换成let声明的变量i

	var arr = [];
	for(let i = 0; i < 10; i++){
		arr.push(function(){
			console.log(i);
		})
	}
	arr[1]();//1
	arr[2]();//2
  • let的缺点
  1. 会导致临时死区(即外面声明了变量a,里面也声明了变量a,{}里面的a会使外面的a失效,此处的{}可以是函数{}即作用域)
	let a = 10;
	{
		console.log(a);
		let a = 20;
	}

ES6-const解析

  • const的用处:
  1. 定义常量,如果定义的常量被修改会报错此处指的会报错是常量未原始值
	const A = 20;
	A = 30;

在这里插入图片描述
1.如果定义的是引用值,则可以修改

	let obj = {
		name: 'zhangsan'
	}
	const Role = obj;
	Role.name = "lisi";

在这里插入图片描述

  • const的其他特点和let相同,即不会变量提升,不会挂载到window, 不能重复声明,缺点也相同,也会造成临时死区
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值