最近决定专心的研究一下ES6,然后自己上网看看资料,有一点小小的收获,给大家分享一下。
ES6说简单的确是简单的,因为它相对于ES5来说,是一种优化,等于说是间接的减少了我们学习JS的难度,并且它也一直都在完善。听到这里,大家一定都很疑惑,为什么说它在完善呢?其实,现在的ES6并没有完整,而是在开发阶段,而且近几年,一年发布一个最新的版本。所以目前为止的最新版本是ES2016版本的。
好了,也不再说那么多了,直接切入正题吧。我们先谈谈ES6的一些基础的东西。
今天我们要说的是,ES6的申明变量与常量。ES5的申明变量与相信大家都不陌生,它和ES6的区别如下所示:ES5:`var 变量名;const 常量名=常量`;ES6:`let 变量名;const 常量名=常量`一看,有的人就会认为var和let是一个意思,但是很遗憾,var和let其实差别真的很大,它们的区别主要是来自以下几个方面:1.let只在当前所在的代码块内有效,什么意思呢?举个栗子:`{var a=1;letb=1;}console.log(a);console.log(b)`大家可以猜猜,输出的结果是什么呢?1,1吗?不,输出的其实是1和一个“ReferenceError: b is not defined”错误。通过这个例子就可以充分的说明,let只在当前所在的代码块内生效.说道当前代码块有效,大家第一时间想到的一定是局部变量,的确,let定义的变量都可以称之为一个局部的变量。2.let定义的变量不会申明提前,什么意思呢?举个栗子:console.log(a);console.log(b)var a=1;let b=1;第一个输出的结果相信大家明白了,那就是undefined,那第二个大家知道了吗?undefined?no,答案是:ReferenceError为什么两个都是申明变量,但是结果却不同呢?那是因为在ES5里面,var申明的变量都会提前到代码块的最前面去申明,但是赋值操作会留在原地,如果在var前面去调用这个变量,会得到一个已经申明但是没有赋值的变量,所以输出的是undefined。但是let不同,它所申明的变量不会被提前申明,如果在代码块里,在let前面去调用这个变量,那么得到的是一个没有申明的变量,所以就会报一个错误(ReferenceError);3.let暂时性死区 ,什么叫暂时性的死区呢?结合第1、2点,我们可以大胆的去推测,假设,代码如下所示,会发生什么样的结果呢?var a=1;{console.log(a);let a=5;}上面的代码输出的是什么呢?有人会说,a在代码块外面申明了,那应该是输出1,也有的人抱有疑惑的态度,那么我就揭晓正确答案,正确的答案是(Uncaught ReferenceError: a is not defined);这就是let的暂时性死区,只要代码块里面用let申明了一个变量,那么整个代码块里面的这个变量就和let的申明结合到一起去了,而外面的申明对代码块里面的变量是毫无影响的。而且它也遵循第1、2点。这就是暂时性死区。4.不允许重复声明 举个栗子:{var a=5;var a=10;console.log(a)}//这串代码执行是没有问题的,结果是10;{let a=5;var a=10;}//这串代码执行是有问题的,结果是(Uncaught SyntaxError: Identifier 'a' has already been declared);所以说,在代码块里面,用let申明了一个变量,那么就不允许在代码块里面对它进行第二次的申明。以上就是我对ES6的let的一点简单的了解,欢迎点评哦。。然后再简单的说一下const。const ES6和ES5用法是一样的,都会遵循,1.一旦定义,决不能改变。2.一旦定义,必须赋值。但是ES6和ES5的区别是:1.ES6里面的const也会遵循只在当前所在的代码块内有效、定义不会申明提前、暂时性死区、不允许重复声明。并且如果申明一个对象为常量,const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心。什么意思呢const obj = {};obj.a = 1;obj.a// 1obj = {}; // TypeError: "foo" is read-only数组也是同一个道理,如果要冻结整个常量,不要它改变,建议使用Object.freeze;用法如下所示:const obj = Object.freeze({});// 常规模式时,下面一行不起作用;// 严格模式时,该行会报错obj.a = 1;今天就说到这里哦,欢迎大家多多补充哦

关于ES6的一些浅薄的看法(1)相关推荐

  1. 写给初级前端的面试经验

    最近到了金三银四的跳槽季,很多人都会面临跳槽找工作,并且再过几个月又会到毕业季,越来越多的毕业生会面临这个问题. 同样,我们组因为业务需要(我们今年倒是还没有人员离职,感动╭(╯^╰)╮)需要进行社招 ...

  2. 运维人员处理云服务器故障的方法总结

    2019独角兽企业重金招聘Python工程师标准>>> 我们团队为Ucloud云计算服务提供专家技术支持,每天都要碰到无数的用户故障,毕竟IAAS涉及比较底层的东西,不管设计的是大客 ...

  3. 在服务器上排除问题的头五分钟

    一.尽可能搞清楚问题的前因后果 不要一下子就扎到服务器前面,你需要先搞明白对这台服务器有多少已知的情况,还有故障的具体情况.不然你很可能就是在无的放矢. 必须搞清楚的问题有: 故障的表现是什么?无响应 ...

  4. 在服务器上排除问题的头 5 分钟

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://blog.jobbole.com ...

  5. directx最终用户运行时_运维定位服务故障时,前5分钟都在忙啥?

    遇到服务器故障,问题出现的原因很少可以一下就想到.我们基本上都会从以下步骤入手,这些也是绝大多数运维工程师在定位故障时前几分钟的主要排查点: 一.尽可能搞清楚问题的前因后果 不要一下子就扎到服务器前面 ...

  6. 浅谈编程-----非计算机专业以及非培训班的一些感悟

    工作加起来也快一年了,期间从单纯的GIS开发,转向互联网游戏开发,并且两个公司平台都还算行业里面比较大的厂,今天刚好有时间,就先记录一下我对编程的一些浅薄的看法,也当我编程一年的一个小总结.可能也有理 ...

  7. 旺旺上显示已上传服务器,在服务器上排除问题的头五分钟 | 旺旺知识库

    遇到服务器故障,问题出现的原因很少可以一下就想到.我们基本上都会从以下步骤入手: 一.尽可能搞清楚问题的前因后果 不要一下子就扎到服务器前面,你需要先搞明白对这台服务器有多少已知的情况,还有故障的具体 ...

  8. 处理服务器故障的前5分钟(转)

    一.尽可能搞清楚问题的前因后果 不要一下子就扎到服务器前面,你需要先搞明白对这台服务器有多少已知的情况,还有故障的具体情况.不然你很可能就是在无的放矢. 必须搞清楚的问题有: 故障的表现是什么?无响应 ...

  9. 数据库之十二星座 水瓶座

    本来今天是想休息一下,看看我喜欢看的"奇葩说", 和看那些肥皂剧相比,唇枪舌战,脑洞大开才是我 favorite.  本期说的是死亡,听完双方慷慨激昂的PK 后,输赢我到不关心,而 ...

最新文章

  1. 扫描服务器端口信息工具,服务器端口扫描工具
  2. 关于epoll 水平触发在udp套接字上不生效问题的原因
  3. python的高级函数_Python的高级函数
  4. 使用ajax跨域withCredentials的作用
  5. SpringBoot学习笔记(4)----SpringBoot中freemarker、thymeleaf的使用
  6. react(87)--批量删除进行置空操作
  7. Win10 64位系统下PCL + Visual Studio + cmake + (Qt) 安装调试
  8. HTML meta 标签 和 http-equiv
  9. 忽略这一点,人工智能变人工智障的!
  10. ResourceBundle和Properties(转载)
  11. coturn源码解析
  12. OV5640的初始化
  13. selenium借助pywinauto工具上传附件
  14. springboot项目启动报Ambiguous mapping. Cannot map ‘xxxController‘ method
  15. proxy代理服务器的代码实现
  16. javaScript打气球小游戏
  17. 2019年西安市民办小升初西工大附中分校面谈录取学生名单
  18. vite alias配置路径地址别名
  19. 最优化方法四:线性规划与非线性规划
  20. #三分法判断单峰函数最值#附加例题LA 5009

热门文章

  1. CSS动画:transition画一个爱心
  2. 自然图像抠图/视频抠像技术发展情况梳理
  3. SQL Server 数据库设计规范
  4. UE4 直接打包图片到目录中,不打包成pak
  5. UE4(虚幻4)基础:光照需要重建
  6. Emacs、cedet、ecb
  7. 流量魔盒“骗”了多少人?快来看看吧!~
  8. 中建五局电子合同:打通全业务数字化链路
  9. android 8.0发布直播,安卓版微信8.0内测版来了
  10. 废弃CSDN博客声明