ES6学习之-let 和const命令
let 和const命令
let命令 用来声明变量,类似于var 。let声明的变量 只在let命令所在的代码块内有效。
在for循环里也是如此 每次循环其实都是一个代码块
function fn() {
let a = 1;
}
console.log(a); //undefined //像以前一个经典案例:for循环绑定一个按钮点击事件,最后点击时却报错的情况,可以不用闭包 直接使用let声明变量i 即可解决;
var btns = document.querySelectorAll(".btn");
for(let i = 0; i < btns.length; i++){
btns[i].addEventListener("click",function(){
console.log(i);
});
}
let命令不存在变量提升现象 所以变量一定要在声明后使用 否则报错。
let命令不允许在同一作用域内重复声明 会报错。
let a = 3;
function fn() {
console.log(a); // 打印出undefined 因为var声明的a变量名提升了
var a = 4;
}
function fn() {
console.log(a); //报错 ReferenceError 因为let声明语句不会变量名提升,智能先声明后只用 否则会报语法错误
let a = 2;
}
const命令 是用来声明一个常量,一旦声明 常量的值就不能改变。跟let命令一样 const声明的变量也不提升,也是必须在声明之后才能使用。不过用const声明的引用类型时 是可以改变其属性的
// 简单类型的变量
const b = 1;
b=2; //ReferenceError 报语法错误 // 引用类型的变量
const obj = {
a: 1,
b:2
}
obj.a = 3;
console.log(obj.a); //3; 如果const声明的是引用类型 则可改变其属性值
在es6中 用let 和const 声明的全局变量 不属于顶层对象
window或者globle对象的。
const a = 1;
let b = 2;
console.log(window.a); // undefined
console.log(window.b); // undefined
在ECMAScript中,变量(或常量)的生命周期模式是固定的,由两种因素决定:作用域和对其的引用。
如:在某个函数作用域中声明的一个变量,函数外部就访问不到。
如果想要延长某个变量的生命周期,最常用的办法就是闭包。因为变量的生命周期是由对其的引用所决定,而闭包的原理便是利用高阶函数来产生能够穿透作用域的引用。
function fn() {
const innerVariable = "闭包变量";
return function() {
return innerVariable;
}
}
var fn1 = fn();
console.log(fn1()); //"闭包变量"
在ES2015中,数组类型又多了一个名为entries的方法,该方法可以返回对应的数组中每一个元素与其下标配对的一个新数组,例如:
const arr = ['zhangsan','lisi','wangwu'];
console.log(arr.entries()); //[[0,'zhangsan'],[1,'lisi'],[2,'wangwu']];
ES6学习之-let 和const命令的更多相关文章
- es6学习笔记--let和const
今天学习了es6中的let和const命令,借此整理一下笔记. let : let 和 var 的声明方式一样,但有 var 比不上的优点.下面用 var 和 let 的例子来加深对 let 的理解. ...
- ES6 入门系列 - let 和 const 命令
let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a = ; ; } a // ReferenceEr ...
- ES6学习笔记<一> let const class extends super
学习参考地址1 学习参考地址2 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015:也 ...
- ES6简介之let和const命令解说
一.var申明变量 学习过JavaScript的同学都应该知道,ES5中申明变量使用var,ES5中的var可以说是无所不能的,所有类型的变量都是由var来申明,但往往很多使用者不知道var申明的变量 ...
- ES6 学习笔记 - let和const
let 和 const 命令 学习资料:ECMAScript 6 入门 let 所声明的变量,只在let命令所在的代码块内有效.用途:循环计数器. 如果使用var,只有一个全局变量i: var a = ...
- ES6入门之let和const命令
前言 大家好,我是一只流浪的kk,当你看到这边博客的时候,说明你已经进入了ES6学习的领域了,从本篇博客开始,我将会将自己学习到ES6的相关知识进行整理,方便大家参考和学习,那么我将带你进入第一节的内 ...
- JavaScript学习笔记 -- ES6学习(二) let 和const
ES6 中新增了两个命令: let 和const. let命令: let 用于声明变量,和var 类似,但是所声明的变量只在代码块中有效,不存在变量提升,有暂时性死区. 1.只在代码块中有效 和var ...
- 【ES6基础】let、const命令和变量的结构赋值
ES5声明变量(2):var .function ES6声明变量(6):var.function.let.const.import和class 1.let命令和const命令 (1)let和const ...
- ES6学习(二)基础命令
一.Let 和 const 作用域的概念:在es5之前是有两个作用域,一个是全局作用域,另外一个是函数作用域,在es6中就多了这样一个块作用域.在这里let 和 const 就是传说中的块作用域,它 ...
随机推荐
- 使用UITableView实现图片视差效果
使用UITableView实现图片视差效果 视差效果如下: 原理: 根据偏移量计算不同的移动速度,so easy! // // RootTableViewController.h // TableVi ...
- System.Buffer 以字节数组(Byte[])操作基元类型数据
1. Buffer.ByteLength:计算基元类型数组累计有多少字节组成. 该方法结果等于"基元类型字节长度 * 数组长度" , , }; , , }; , , }; Cons ...
- memcached源码剖析4:并发模型
memcached是一个典型的单进程系统.虽然是单进程,但是memcached内部通过多线程实现了master-worker模型,这也是服务端最常见的一种并发模型.实际上,除了master线程和wor ...
- Python安装Windows的pip包
1.到https://www.python.org/downloads/ 下载python包安装python 2.到https://pypi.python.org/pypi/pip#downloads ...
- 【51nod 1514】 美妙的序列
题目 我们发现我们得正难则反 还是设\(f_i\)表示长度为\(i\)的序列个数 考虑容斥 \[f_i=i!-\sum_{j=1}^{i-1}f_j(i-j)!\] \(i!\)显然是总方案数,我们减 ...
- 【[SCOI2010]序列操作】
好颓啊,我竟然来写了一道恶心的板子 旁边的魏佬嘲讽我,还用欺负我 嘤嘤嘤 那就不膜魏佬了 嘤嘤嘤 这是一道无聊的板子 看到这些操作,我们看到这些操作就知道我们需要维护的东西了 首先那个最长的连续的\( ...
- 【node.js】Buffer(缓冲区)
Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区. 创建 Buffer 类 Node Buffer 类可以通过多种方式来创建. 1.创建长度为 10 字节的 ...
- 【BBS】BBS论坛项目各个页面的工作流程图
1论坛整体结构 2数据库结构 3登录页面 4论坛首页(显示各个板块) 5显示板块对应的内容 6文章内容页 7新增板块.发表文章.回复 8版面管理.用户管理.发帖排行
- oracle优化脚本
oracle优化脚本 --查看PGA的最佳设计建议SQL语句select PGA_TARGET_FOR_ESTIMATE / 1024 / 1024 PGAMB, PGA_TARGET_F ...
- 基于maven的JavaWeb项目构建部署
需要准备的安装文件: 1 JDk http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html jdk-8 ...