前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES6-let,const解析

ES6-let,const解析

作者头像
envoke
发布2020-09-17 11:27:18
3000
发布2020-09-17 11:27:18
举报

ES6-let,const解析

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

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

ES6-let 解析

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

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

代码语言:javascript
复制
	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

代码语言:javascript
复制
	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失效,此处的{}可以是函数{}即作用域)
代码语言:javascript
复制
	let a = 10;
	{
		console.log(a);
		let a = 20;
	}

ES6-const解析

  • const的用处:
  1. 定义常量,如果定义的常量被修改会报错此处指的会报错是常量未原始值
代码语言:javascript
复制
	const A = 20;
	A = 30;
在这里插入图片描述
在这里插入图片描述

1.如果定义的是引用值,则可以修改

代码语言:javascript
复制
	let obj = {
		name: 'zhangsan'
	}
	const Role = obj;
	Role.name = "lisi";
在这里插入图片描述
在这里插入图片描述
  • const的其他特点和let相同,即不会变量提升,不会挂载到window, 不能重复声明,缺点也相同,也会造成临时死区
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ES6-let,const解析
  • 我们先看看ES5中var变量的缺点
  • ES6-let 解析
  • ES6-const解析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档