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
变量i
是var
声明的,在全局范围内都有效,所以全局只有一个变量i
。每一次循环,变量i
的值都会发生改变,而循环内被赋给数组a
的function
在运行时,会通过闭包读到这同一个变量i
,导致最后输出的是最后一轮的i
的值,也就是10。
let:
var a = []; for (let i = 0; i < 10; i++) {a[i] = function () {console.log(i);}; } a[6]();
结果:
6
变量i
是let
声明的,当前的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
ECMAScript 6 -- let和const命令相关推荐
- 阮一峰 《ECMAScript 6 入门》:let 和 const 命令
以下内容全文出自 阮一峰的书: <ECMAScript 6 入门> 电子版地址:ES 6标准入门(第3版) let 命令 基本用法 ES6 新增了let命令,用来声明变量.它的用法类似于v ...
- ECMAScript 6 之 let 和 const 命令
1.let基本用法 1.1.声明变量 let声明的变量只在它所在的代码块有效. 1.2.不存在变量提升 var命令会发生"变量提升"现象,即变量可以在声明之前使用,值为undefi ...
- ES6之let(理解闭包)和const命令
ES6之let(理解闭包)和const命令 最近做项目的过程中,使用到了ES6,因为之前很少接触,所以使用起来还不够熟悉.因此购买了阮一峰老师的ES6标准入门,在此感谢阮一峰老师的著作. 我们知道,E ...
- 【面试题】【ES6】let和const命令 (面试必看)
给大家推荐一个实用面试题库 1.前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 1.let命令 基本用法 用法类似于var,但是所声明的变量,只在let命令所在 ...
- js中的const 命令
js中的const 命令 一直以来我在我字典里认为const 命令就是用来声明一个常量,然后并非如此,这也是我在工作中偶然发现的,然后查了下文档才得知,记录在档,以供参考: const 定义 cons ...
- ES6 let和const 命令
ES6 let 和 const 命令 1. 变量声明 2. 变量提升问题 3. 暂时性死区(TDZ) 4. 块级作用域 4.1 为什么需要块级作用域? 4.2 ES6的块级作用域 4.3 块级作用域和 ...
- let const 命令
一.let命令 用于声明变量. 1) 所声明的变量只在let命令所在代码块内有效.(块级作用域) {let a=10;var b=1; } a // ReferenceError: a is not ...
- 2.let和const命令
1.let命令 let声明的变量,只在let命令所在的代码块内有效. {let a = 10;var b = 1; }a // ReferenceError: a is not defined. b ...
- ES6-let和const命令
let 1.ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. 2.不存在变量提升 var命令会发生"变量提升"现象 ...
最新文章
- 【转载】tf.nn.conv2d_transpose是怎样实现反卷积的?
- ***和******
- 【赠书】深入浅出embedding:原理解析与应用实践
- cocos2d-x android 环境搭配,cocos2d-x Android环境配置问题和解决方法
- java访问登录网页_===java怎样访问需要登录才能查看的网页????急!!===...
- 矩阵运算_Eigen使用_旋转矩阵/角轴/欧拉角/四元数相互转换
- opencv怎么2个摄像头_内脏脂肪过高怎么办?从2个方法入手,坚持3个月甩掉小肚腩...
- 【办公自动化】国土“三调”用地分类“一键”转国标分类
- PCIe简介及引脚定义
- 孵出鸡蛋然后拿去卖钱
- Delphi 10.3.1 TNetHttpClient在多线程中存在的问题及解决方法。
- 菜的抠脚团队正式成立
- git公钥生成以及日常操作
- _findnext()报错写入位置 0x000000000BE2A940 时发生访问冲突。
- HPE矛头直指思科 与Arista达成软件定义合作关系及销售协议
- php 查询数据表第2条,PHP 连接 MySQL 数据库的连接函数 mysql_connect 的第二个参数是( )。...
- 软件开发php代码规范,php开发规范_PHP代码编写规范
- 批量自动下单(1688)
- 微信登录不能回调WXEntryActivity的解决
- 计算机主机启动不了系统安装系统安装软件,开不了机怎么用u盘重装系统
热门文章
- 理解Caffe的网络模型
- Github(2)-本地配置git
- 《Python Cookbook 3rd》笔记(1.5):实现一个优先级队列
- redis 缓存过期默认时间_redis缓存过期机制
- 该工程中的宏被禁止_建筑劳务分包都能承担什么工程
- 密码学专题 序列号文件
- codeforces 734A-C语言解题报告
- YUV测试序列下载地址
- 路由器和交换机的区别详解
- 解决:ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect