ECMAScript 6 -- let和const命令

ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

for (let i = 0; i < 10; i++) {console.log(i);}

可以执行

for (let i = 0; i < 10; i++) {}console.log(i);

就会报错

ncaught ReferenceError: i is not definedat <anonymous>:3:13at Object.InjectedScript._evaluateOn (<anonymous>:145:167)at Object.InjectedScript._evaluateAndWrap (<anonymous>:137:25)at Object.InjectedScript.evaluate (<anonymous>:118:14)

let var使用区别:

var:

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

结果:

10

变量ivar声明的,在全局范围内都有效,所以全局只有一个变量i。每一次循环,变量i的值都会发生改变,而循环内被赋给数组afunction在运行时,会通过闭包读到这同一个变量i,导致最后输出的是最后一轮的i的值,也就是10。

let:

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

结果:

6

变量ilet声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是6。

 

for循环还有一个特别之处,就是循环语句部分是一个父作用域,而循环体内部是一个单独的子作用域。

不存在变量升级:

// var 的情况
console.log(foo); // 输出undefined
var foo = 2;// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;
VM171:2 undefined

报错:

VM171:6 Uncaught ReferenceError: bar is not definedat <anonymous>:6:13at Object.InjectedScript._evaluateOn (<anonymous>:145:167)at Object.InjectedScript._evaluateAndWrap (<anonymous>:137:25)at Object.InjectedScript.evaluate (<anonymous>:118:14)(anonymous function) @ VM171:6InjectedScript._evaluateOn @ VM68:145InjectedScript._evaluateAndWrap @ VM68:137InjectedScript.evaluate @ VM68:118

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习之朴素贝叶斯算法的推理及相关知识总结

文章目录1、朴素贝叶斯公式1.1、贝叶斯公式的应用2、了解贝叶斯网络2.1、知道什么是贝叶斯网络2.2、贝叶斯网络的两种表示形式2.3、掌握全连接的贝叶斯网络的公式2.3、知道条件概率表参数个数分析的方法2.4、掌握变量联合分布概率的公式及含义2.5、知道马尔科夫模型3、了解D-se…

mysql之外键

外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库有时候会由于没有通过外键的检测而使得开发人员删除,插入操作失败.他们觉得这样很麻烦 …

Android onLoadFinished与onLoaderReset

onLoadFinished 这个方法是在前面已创建的加载器已经完成其加载过程后被调用&#xff0c;这个方法保证会在应用到加载器上的数据被释放之前被调用。在此方法中&#xff0c;你必须删除所有对旧数据的使用(因为它将很快会被删除)&#xff0c;但是不要自己去释放它们&#xff0c;因…

HA机制的大数据集群的搭建过程

文章目录集群规划1、 准备Linux环境1.1、修改Linux主机名1.3、修改主机名和IP的映射关系1.4、关闭防火墙1.5、ssh免登陆&#xff08;主节点和从节点之间&#xff09;2、 安装JDK2.1、上传2.2、解压jdk2.3、将java添加到环境变量中2.4、刷新配置2.5、验证3、安装zookeeper3.1、解…

Linux系统7个运行级别图文详解

Linux系统7个运行级别图文详解 当安装linux操作系统时将选择下列那一个操作 ______ A&#xff0e;选择 "图形登录方式" 设定系统开始运行级为4 B&#xff0e;选择 "文本登录方式" 设定系统开始运行级为3 C&#xff0e;选择 "文本登录方式" 设定系…

CRISPR基因编辑

2007年&#xff0c;一家酸奶公司发现一种细菌拥有抵御病毒的特殊防御机制。2012年&#xff0c;细菌的这种机制就被科学家阐述清楚&#xff0c;2013年这一领域快速增长。它被视为分子生物学的一个奇迹&#xff0c;事实上&#xff0c;它并非仅对生物学家产生革命的影响&#xff0…

酒店之王

酒店之王 题目描述 XX酒店的老板想成为酒店之王&#xff0c;本着这种希望&#xff0c;第一步要将酒店变得人性化。由于很多来住店的旅客有自己喜好的房间色调、阳光等&#xff0c;也有自己所爱的菜&#xff0c;但是该酒店只有p间房间&#xff0c;一天只有固定的q道不同的菜。 有…

使用IntelliJ IDEA碰到的问题总结

文章目录问题一&#xff1a;无法创建Java Class文件问题一&#xff1a;无法创建Java Class文件 今天打开项目时&#xff0c;发现右击新建不了java.class文件&#xff0c;于是尝试了以下方法&#xff1a; &#xff08;1&#xff09;选择 File——>Project Structure——>…

为什么shell脚本第一行要#!/bin/sh

告诉操作系统, 此脚本的解释器为 /bin/sh 这个可执行文件 类似地, 如果你的脚本用 bash, ksh, 解释, 第一行就应该是#!/bin/bash #!/bin/ksh 之类的 或者, 你自己定义一种脚本语言, 再自己写个解释器去执行它, 比如说叫 xshell, 放在 /usr/local/bin 下, 你的脚本第一行就应该是…

linux文本处理常用指令总结

引子 作为一个偏爱windows的程序员&#xff0c;以前做文本处理的时候总是喜欢在windows下用notepad等图形化工具处理&#xff0c;比如有时需要把linux服务器上一个文件进行一次全局字符串替换这样简单的操作&#xff0c;还得把文件down到本地编辑好再传回去。这两天买了本《鸟哥…

CSS——基础选择器

CSS的基础选择器1 CSS指的是层叠样式表2 CSS规则由两个主要的部分构成选择器&#xff0c;以及一条或多条声明3 选择器通常是你需要改变样式的 HTML 元素如h14 每条声明由一个属性和一个值组成&#xff0c;每个属性有一个值&#xff0c;属性和值被冒号分开5 属性大于 …

Linux中chown和chmod的区别和用法

chmod修改第一列内容&#xff0c; chown修改第3、4列内容&#xff1a; chown用法&#xff1a; 用来更改某个目录或文件的用户名和用户组。 chown 用户名:组名 文件路径&#xff08;可以是绝对路径也可以是相对路径&#xff09; 例1&#xff1a;chown root:root /tmp/tmp1 就…

玩大数据期间碰到的一些问题总结

文章目录问题一&#xff1a;Zookeeper节点数量为什么建议是奇数个&#xff1f;问题二&#xff1a;HA机制的Hadoop集群中Journal Node 作用问题三&#xff1a;两个datanode节点互相排斥怎么解决&#xff08;集群无法识别新加入的Datanode&#xff09;&#xff1f;问题四&#xf…

JAVA的SSH框架登录注册

Struts 的MVC设计模式可以使我们的逻辑变得很清晰&#xff0c;主要负责表示层的显示。 Spring 的IOC和AOP可以使我们的项目在最大限度上解藕。 hibernate的就是实体对象的持久化了, 数据库的封装。 项目截图&#xff1a;(代码是按照项目截图上传的&#xff0c;直接对号入座即可…

Visual Studio Code 前端调试不完全指南

本文最初发布于我的个人博客&#xff1a;咀嚼之味Visual Studio Code (以下简称 vscode) 如今已经代替 Sublime&#xff0c;成为前端工程师们最喜爱的代码编辑器。它作为一个大型的开源项目&#xff0c;不断推陈出新&#xff1b;社区中涌现出大量优质的插件&#xff0c;以支持我…

MySQL中(delete、truncate、drop) 的区别

delete、truncate、drop的用法 MySQL 数据表中delete删除数据的通用语法&#xff1a; ###删除 students_tbl 表中 student_id 为3 的记录&#xff1a; delete from students_tbl where student_id3; MySQL 数据表中truncate删除数据的通用语法&#xff1a; ###删除 students_…

机器学习之LDA主题模型算法

文章目录1、知道LDA的特点和应用方向1.1、特点1.2、应用方向2、知道Beta分布和Dirichlet分布数学含义3、了解共轭先验分布4、知道先验概率和后验概率5、知道参数α值的大小对应的含义6、掌握LDA主题模型的生成过程7、知道超参数α等值的参考值8、LDA总结1、知道LDA的特点和应用…

分别写出引入CSS的3种方式, 特点, 优先级

第一&#xff1a;css的三种引入方式 1.行内样式 最直接最简单的一种&#xff0c;直接对HTML标签使用style""&#xff0c;例如&#xff1a; <p style"color:#F00; "></p> 缺点&#xff1a;HTML页面不纯净&#xff0c;文件体积大&#xff0c…

[Go] Template 使用简介

Golang 提供了两个标准库用来处理模板 text/template 和 html/template。我们使用 html/template 格式化 html 字符。 模板引擎 模板引擎很多&#xff0c;Python 的 jinja&#xff0c;nodejs 的 jade 等都很好。所谓模板引擎&#xff0c;则将模板和数据进行渲染的输出格式化后的…

内存泄露监测

2019独角兽企业重金招聘Python工程师标准>>> iOS 内存泄露监测 144 作者 谢谢生活 已关注 2017.05.19 17:38* 字数 4235 阅读 209评论 0喜欢 6 iOS可能存在的内存泄露&#xff1a;block 循环引用。当一个对象有一个block属性&#xff0c;而block属性又引用这个对象…