让我们来看看es中let:

1、 let 声明只在当前块有效

{
let a = 1;
var b = 2;
}
console.log(a); //报错 a is not defined
console.log(b); //2
2、 let不会让我们的代码发生变量提升
console.log(a); //undefined
console.log(b); //报错 b is not defined
var a = 2; //变量a得到了提升
let b = 1; //变量b没有得到提升
3、let的区域绑定
var t = 123;
if(true) {
t = 5; //报错 t is not defined
let t;
}
ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,
从一开始就形成了封闭的空间,凡是在声明之前使用这些变量就会报错
4、 let不能在相同作用域内,重复声明同一个变量
{
let a = 5;
var a = 3;
}
报错:Identifier 'a' has already been declared
{
let a = 5;
let a = 3;
}
function a (x){
let x = 3;
console.log(x);
}
a(5);
5、 let在不同作用域声明取名相同的变量,他们可以有自己的值,可以互不影响。
var t = 123;
if(true) {
let t;
t = 5;
console.log(t); //5
}
console.log(t); //123

分别运行下代码看会发生什么

for(let i=0; i<=5; i++){
setTimeout(function(){
console.log(i) //每个迭代重新绑定
},i*1000)
}
for(var i=0; i<=5; i++){
setTimeout(function(){
console.log(i)
},i*1000)
}
总结:let让代码更加严谨
let:
只在声明的作用域内有效
使用前必须先声明:1、不会让我们的变量发生提升
2、 区域绑定
不能重复声明: 在相同作用域内,只要存在let声明该变量,
就不能再次声明该变量(包括用let声明和其他如var,congst等声明都是不行的)
在不同作用域内,可以声明取名相同的变量,但是他们代表的含义并非相同

下面是一些小测试

function bar(x = y, y = 2){
return [x,y];
}
bar();     //报错
function bar(x = 2, y = x){
return [x,y];
}
bar();   
var t = 123;
if(true) {
let t;
t = 5;
console.log(t); //5
}
console.log(t); //123

ES 6理解 let相关推荐

  1. iPhone的OpenGL ES的资源- 18,你必须知道 !

    iPhone的OpenGL ES的资源- 18,你必须知道 ! OpenGL ES是编程的iPhone使用的图形API. 如果要创建自己的游戏引擎,从头开始设计一个游戏,或者创造一些其他图形密集型应用 ...

  2. OpenGL ES 2.0 总体概述

    文章目录 OpenGL ES 2.0 总体概述 1. OpenGL ES 的两个小伙伴 1.1 EGL 1.2 GLSL 2. 屏幕图片的本质和产生过程 3. OpenGL ES pipeline 3 ...

  3. OpenGL ES: (5) OpenGL的基本概念、OpenGL ES 在屏幕产生图片的过程、OpenGL管线(pipeline)...

    一. OpenGL的基本概念 OpenGL 的结构可以从逻辑上划分为下面 3 个部分: 图元(Primitives) 缓冲区(Buffers) 光栅化(Rasterize) 图元(Primitives ...

  4. OPENGL ES 2.0 知识串讲(1)――OPENGL ES 2.0 概括

    更多图形知识请关注我的公众号: 前言 电脑是做什么用的? 电脑又被称为计算机,那么最重要的工作就是计算.看过三体的同学都知道, 电脑中有无数纳米级别的计算单元,通过 0 和 1 的转换,完成加减乘除的 ...

  5. ElasticSearch入门简介、安装ES(安装Kibana和IK分词器)使用 Postman连接ES进行测、ESRestAPI(操作索引CRUD操作文档CRUD)、练习

    要理解倒排索引 要能够使用DSL命令操作索引库 要能够使用DSL命令操作文档 要能够使用RestAPI操作索引库.文档 一.ES简介 理解倒排索引的概念和作用 理解es和MySql的区别和使用场景 1 ...

  6. Elastic Search 介绍和基本概念

    Elastic Search 特点 Elastic Search 可能是是当下最火的搜索引擎中间件了.为什么这么火呢?主要是因为他有几大绝艺: 快速.无论什么时候,你需要向 ES 查询你的数据,都能够 ...

  7. mysql的一些初步使用!mysqlcheck mysqladmin 建立删除修改表,库,等

    mysqladmin create testdb 创建testdb数据库 mysqladmin drop testdb 删除testdb数据库 查看当前服务器的状态信息 mysqladmin exte ...

  8. Elasticsearch 之 数据索引

    对于提供全文检索的工具来说,索引时一个关键的过程--只有通过索引操作,才能对数据进行分析存储.创建倒排索引,从而让使用者查询到相关的信息. 本篇就ES的数据索引操作相关的内容展开: 更多内容参考:El ...

  9. iOS OpenGL ES2.0教程   Lesson03 旋转

    iOS OpenGL ES2.0教程    Lesson03  旋转 注:可供翻译的课程只有前两课.从这节课起,我试着根据我对OpenGL ES的理解写接下去的课程,希望能和大家一起学习. 在上节课中 ...

最新文章

  1. 2021年大数据常用语言Scala(十八):基础语法学习 Map对象
  2. Android onTouch 方法 和onTouchEvent 方法
  3. 【C++】C++好书推荐
  4. 记录一次mysql不能启动的解决方案
  5. 网络爬虫框架Webmagic
  6. Java 学习网站汇总贴
  7. Android菜鸟的成长笔记(5)——Android系统源代码你下载了吗?
  8. js模块化之模块依赖处理
  9. 光端机的原理和使用范围
  10. Linux学习笔记10
  11. html是什么型语言,HTML笔记
  12. SpringMvc-HandlerMapping/RequestCondition
  13. 考勤系统 服务器管理,考勤管理系统ZKNet Web Server管理
  14. 软件质量模型ISO/IEC25010
  15. MySQL使用group by分组查询每组最新的一笔数据
  16. 黑马程序员_HTML基础
  17. python pandas读取csv文件指定行_python pandas获取csv指定行 列的操作方法
  18. linux内核看门狗关闭方法,详解linux 看门狗驱动编写
  19. vcs 如何 dump sva
  20. 一张图进阶 RocketMQ - 通信机制

热门文章

  1. 源代码安装apache遇到的问题解决
  2. 自由职业者和外包接单项目分析
  3. 是什么让你的ExtJS应用程序运行缓慢?
  4. 【译】Vue 的小奇技(第七篇):在 vue-multiselect 基础上创建 ImageSelect 组件
  5. Yii2.0 rules验证规则大全
  6. Ubuntu下pycharm无法输入中文
  7. 2016 Multi-University Training Contest 1 T4
  8. ActiveMQ 使用文档
  9. 转:PHP中文乱码问题
  10. [翻译] 物理引擎javascript实现