ES6新增了let取代var,let主要有以下特点。

1 只在代码块内有效,代码块外不能使用let声明的变量。let很适合声明循环体的变量。

它可以解决一些闭包的问题存在的问题比如:

var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 10
var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 6

2 不存在变量提升 。

3 暂时性死区

从进入某个块级作用域开始到用let声明一个变量这个区间内属于该变量的暂时性死区,也叫TDZ。

const与let类似有以下特点

只在代码块内有效,const声明的变量不能提升,存在TDN

const声明一个只读的常量。一旦声明,常量的值就不能改变。倒是可以为它添加属性,const一旦声明变量,就必须立即初始化。它本质上就是一个指针指向一块内存,你能改变它指向的内存中的数据,但是不能改变它的指向。

6种声明变量的方法  let  const  import  class   var   function   其中前四种是ES6新增的。

let const 声明的全局变量不属于window属性

最新文章

  1. 理解Docker(6):若干企业生产环境中的容器网络方案
  2. 自己实现多线程的socket,socketserver源码剖析
  3. LINQ之路 3:C# 3.0的语言功能(下)
  4. [转]Windows的窗口刷新机制
  5. mysql_DML_insert
  6. DevExpress的GridView设置特定行的样式
  7. Android ImageView 点击更换头像
  8. HDFS追本溯源:HDFS操作的逻辑流程与源码解析
  9. C# 最全的文件工具类FileHelper
  10. Oracle exp和expdp对数据进行备份
  11. perceptual loss
  12. 使用PrerenderSpaPlugin预渲染插件没有成功渲染
  13. git常用操作记录
  14. 批量kill java进程方法-引出子shell和反引用
  15. 【BFS宽度优先搜索】
  16. servlet 3.1 摘录
  17. spring + mybatis 存取clob
  18. 如何让其他机器访问你的oracle数据库
  19. MySQL+Navicat for MySQL安装
  20. 用Python开始机器学习(3:数据拟合与广义线性回归)

热门文章

  1. 【干货】提取图片元数据之exiftool
  2. Python爬虫基础之lxml
  3. WPF 10天修炼 第五天- 内容控件
  4. margin:auto你真的理解么?
  5. 算法工程师&lt;数学题/智力题&gt;
  6. 在servlet中使用spring注解
  7. python中thread的setDaemon、join的用法的代码
  8. 使用云服务器实现Google搜索
  9. 史上最全的select加锁分析(Mysql)
  10. ubuntu频繁出现 安装包依赖关系