ES6中的关键字 - let
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的更多相关文章
- ES6中class关键字
1 .介绍 //定义类 class Point { constructor(x, y) { this.x = x; this.y = y; } toString() { return '(' + th ...
- ES6中的关键字 - const
const 关键字 1.声明后的值不可以修改: const name = "小康哥"; name = "小康"; // 报错,const为constant的缩写 ...
- 浅谈ES6中super关键字
作用: super 关键字用于访问父对象上的函数. 语法: super([arguments]); // 访问父对象上的构造函数 super.functionOnParent([arguments]) ...
- ES6中 const 关键字
const声明一个只读的常量.一旦声明,常量的值就不能改变. 定义后可以使用但不能修改 但是,const 定义的对象可能与我们想象的不太一样 定义了对象b ,我们可以在b上添加修改属性,再看一个列子 ...
- ES6中class的继承
extends 子类的继承 super(); 调用父类的构造方法,只能在子类中执行 继承可以让子类获得父类的方法 属性,可以扩充 增加新的方法 属性等 父类(基类)--被继承的类 子类--继承后的类 ...
- 理解 ES6 语法中 yield 关键字的返回值
在 ES6 中新增了生成器函数的语法,本文解释了生成器函数内 yield 关键字的返回值. 描述 根据语法规范,yield 关键字用来暂停和继续执行一个生成器函数.当外部调用生成器的 next() 方 ...
- 理解 ES6 语法中 yield* 关键字的作用
在 ES6 中新增了生成器函数的语法,本文解释了与生成器函数有关的 yield* 关键字,及其使用场景. 描述 根据语法规范,yield* 的作用是代理 yield 表达式,将需要函数本身产生(yie ...
- ES6中的模板字符串和新XSS Payload
ES6中的模板字符串和新XSS Payload 众所周知,在XSS的实战对抗中,由于防守方经常会采用各种各样严格的过滤手段来过滤输入,所以我们使用的XSS Payload也会根据实际情况作出各种各样的 ...
- ES6中的var let const应如何选择
javascript世界里面的每个人都在说有关ECMAScript 6 (ES6,也称作ES 2015)的话题,对象的巨大变化 ( 类 , super() , 等), 函数 (默认参数等), 以及模块 ...
随机推荐
- Node.js返回JSON
在使用JQuery的Ajax从服务器请求数据或者向服务器发送数据时常常会遇到跨域无法请求的错误,常用的解决办法就是在Ajax中使用JSONP.基于安全性考虑,浏览器会存在同源策略,然而<scri ...
- JavaWeb Listener之HttpSessionBindListener
HttpSessionBindListener 监听把自身这个对象绑定到HttpSession对象上.解绑 绑定到HttpSession对象上,其实就是调用session的setAttr ...
- .net web api 权限验证
做一个登录权限验证. 开始吧. using System; using System.Collections.Generic; using System.Drawing; using System.D ...
- Spark GraphX图算法应用【分区策略、PageRank、ConnectedComponents,TriangleCount】
一.分区策略 GraphX采用顶点分割的方式进行分布式图分区.GraphX不会沿着边划分图形,而是沿着顶点划分图形,这可以减少通信和存储的开销.从逻辑上讲,这对应于为机器分配边并允许顶点跨越多台机器. ...
- 资深P7架构师详解淘宝服务端高并发分布式架构演进之路
1. 概述 本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则. ...
- Ubuntu Pycharm下deeplab ImportError: cannot import name 'monitoring'
1.使用pycharm运行deeplab过程中出现ImportError: cannot import name 'monitoring' 2.把root用户及非root用户中pip安装的tensor ...
- Python字符编码和转码
一:Python2 python2默认编码格式是ascii码,解释器解释代码时会将代码以及代码中的字符串等转换成ascii码再执行.这样会导致字符串输出或传输时,与当前环境编码格式不同的话会显示乱码. ...
- MySQL的select多表查询
select 语句: select 语句一般用法为: select 字段名 from tb_name where 条件 ; select 查询语句类型一般分为三种: 单表查询,多表查询,子查询 最简 ...
- Go Programming Language 3
[Go Programming Language 3] 1.These two statements declare a struct type called and a variable calle ...
- Linux——查找占用磁盘体积最大的前10个文件
前言 服务器上传文件失败了,才开始没考虑到磁盘原因还以为是自己的scrt的问题,还好df -h看了下,最后发现磁盘满了,真是.... 查找 find / -type f -print0 | xargs ...