let关键字

  1.let关键字声明的变量仅仅在自己的块级作用域内起作用,出了块级作用域就不起作用了;

var arr2 = [];

for (let index = 0; index < 10; index++) {
arr2[index] = function () {
console.log(index);
}
} arr2[6](); // 结果为:6

    此结果就是我们想要得到的结果;

    任何一对花括号“{ }”中的语句都属于一个作用域块,在花括号里面使用let定义的所有的变量在花括号外都是不起作用的,这就是我们所提及的块级作用域。

  2.let关键字定义变量时,必须先声明定义在使用,否则会报错;

var b = 1;
(function(){
alert(b);
let b = 2;
})(); // 报错

    此时程序会提示报错,报错的原因是b未定义;

  3.同一个块级作用域内,不允许重复声明同一个变量;

{
var a1 = 1;
let a1 = 2;
} {
let a2 = 3;
let a2 = 4;
}

    两种声明变量的方式都会报错,前者是因为a已经使用var关键字声明定义过了,后者是因为是用let关键字重复声明同一个变量;

  4.函数内也不能使用let关键字重新声明函数的参数;

function demo(ts) {
let ts = 'xk';
alert(ts);
}
demo(Hi); // 报错

    报错原因是因为使用了let关键字重新声明了函数的参数ts;

  5.使用var关键字声明变量的时,会出现“变量提升”的现象;

//  例如:
var arrList = [];
for(var i = 0;i <= 10; i++){
arrList[i] = function() {
console.log(i);
}
}
arr[8](); // 输出结果为:10 var num = 1;
(function () {
alert(a); // 变量提升,相当于在弹出a之前,var a;
var num = 2;
})(); // 输出结果为:undefined 未定义

  总结:使用let关键字声明的变量只在跨级作用域中起作用,比较适合for循环中,同时也不会出现变量提升的现象;同一个代码块内,不可以重复声明相同的变量,也不可以重复声明函数内的参数。

ES6中的关键字 - let的更多相关文章

  1. ES6中class关键字

    1 .介绍 //定义类 class Point { constructor(x, y) { this.x = x; this.y = y; } toString() { return '(' + th ...

  2. ES6中的关键字 - const

    const 关键字 1.声明后的值不可以修改: const name = "小康哥"; name = "小康"; // 报错,const为constant的缩写 ...

  3. 浅谈ES6中super关键字

    作用: super 关键字用于访问父对象上的函数. 语法: super([arguments]); // 访问父对象上的构造函数 super.functionOnParent([arguments]) ...

  4. ES6中 const 关键字

    const声明一个只读的常量.一旦声明,常量的值就不能改变. 定义后可以使用但不能修改 但是,const 定义的对象可能与我们想象的不太一样 定义了对象b ,我们可以在b上添加修改属性,再看一个列子 ...

  5. ES6中class的继承

    extends 子类的继承 super(); 调用父类的构造方法,只能在子类中执行 继承可以让子类获得父类的方法 属性,可以扩充 增加新的方法 属性等 父类(基类)--被继承的类 子类--继承后的类 ...

  6. 理解 ES6 语法中 yield 关键字的返回值

    在 ES6 中新增了生成器函数的语法,本文解释了生成器函数内 yield 关键字的返回值. 描述 根据语法规范,yield 关键字用来暂停和继续执行一个生成器函数.当外部调用生成器的 next() 方 ...

  7. 理解 ES6 语法中 yield* 关键字的作用

    在 ES6 中新增了生成器函数的语法,本文解释了与生成器函数有关的 yield* 关键字,及其使用场景. 描述 根据语法规范,yield* 的作用是代理 yield 表达式,将需要函数本身产生(yie ...

  8. ES6中的模板字符串和新XSS Payload

    ES6中的模板字符串和新XSS Payload 众所周知,在XSS的实战对抗中,由于防守方经常会采用各种各样严格的过滤手段来过滤输入,所以我们使用的XSS Payload也会根据实际情况作出各种各样的 ...

  9. ES6中的var let const应如何选择

    javascript世界里面的每个人都在说有关ECMAScript 6 (ES6,也称作ES 2015)的话题,对象的巨大变化 ( 类 , super() , 等), 函数 (默认参数等), 以及模块 ...

随机推荐

  1. python排序 基数排序

    算法思想 基数排序通过按位比较(一般从最低位开始)将元素按照最低位的数放到10个桶中,当所有的元素都这样被处理一次后,在按从0到9的顺序将每个桶的元素再取出来(不关注其他位的,只关注当前位的)这样就完 ...

  2. python 变量作用域、闭包

    先看一个问题: 下面代码输出的结果是0,换句话说,这个fucn2虽然已经用global声明了variable1,但还是没有改变变量的值 def func1(): variable1=0 def fun ...

  3. springmvc上传图片到Tomcat虚拟目录

    一.简介 通过把文件上传到tomcat的虚拟目录,实现代码和资源文件分开. 二.环境 spring+springmvc+mybatis 三.代码实现 1.导入文件上传的jar <dependen ...

  4. uni-app项目配置记录

    新建项目 直接使用编辑器快速新建,具体方法很简单,官方文档很详细,这里不在叙说 配置项目: 项目搭建好了之后,我们配置一些 api 和 router,这些直接在插件市场上面进行配置,非常好用 封装的r ...

  5. iOS编程

    一.语法 1. performSelector 2.

  6. 超快速度下载MNIST数据集

    Download mnist dataset and extract in 1 second! For Caffe users: create $CAFFE/data/mnist/get_mnist_ ...

  7. Linux的rpm管理

                            书山有路勤为径,学海无涯苦作舟 自学linux已经有几天了,感觉还可以.坚持下去,就会有收获. 每个系统都用相应的软件的管理,Linux也不例外.下面讲 ...

  8. python库包大全(转)

    python 库资源大全 转自: Python 资源大全中文版 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具.官网 pyenv:简单的 Python ...

  9. 页面预加载loading动画,再载入内容

    默认情况下如果网站请求速度慢,所以会有一段时间的空白页面等等,用户体验效果不好,见到很多的页面都有预加载的效果,加载之前先加载一个动画,后台进程继续加载页面内容,当页面内容加载完之后再退出动画显示内容 ...

  10. django admin 编辑页面(change page) 自定义字段, 展示数据

    最近遇到一个需求, 需要在django 的 admin 编辑页内展示由用户上传的进行反馈的图片, 还要支持点击查看原图, 所以需要在编辑页内自定义 img 标签及 a 标签进行图片的展示及点击跳转 i ...