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命令的更多相关文章

  1. es6学习笔记--let和const

    今天学习了es6中的let和const命令,借此整理一下笔记. let : let 和 var 的声明方式一样,但有 var 比不上的优点.下面用 var 和 let 的例子来加深对 let 的理解. ...

  2. ES6 入门系列 - let 和 const 命令

    let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a = ; ; } a // ReferenceEr ...

  3. ES6学习笔记<一> let const class extends super

    学习参考地址1  学习参考地址2 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015:也 ...

  4. ES6简介之let和const命令解说

    一.var申明变量 学习过JavaScript的同学都应该知道,ES5中申明变量使用var,ES5中的var可以说是无所不能的,所有类型的变量都是由var来申明,但往往很多使用者不知道var申明的变量 ...

  5. ES6 学习笔记 - let和const

    let 和 const 命令 学习资料:ECMAScript 6 入门 let 所声明的变量,只在let命令所在的代码块内有效.用途:循环计数器. 如果使用var,只有一个全局变量i: var a = ...

  6. ES6入门之let和const命令

    前言 大家好,我是一只流浪的kk,当你看到这边博客的时候,说明你已经进入了ES6学习的领域了,从本篇博客开始,我将会将自己学习到ES6的相关知识进行整理,方便大家参考和学习,那么我将带你进入第一节的内 ...

  7. JavaScript学习笔记 -- ES6学习(二) let 和const

    ES6 中新增了两个命令: let 和const. let命令: let 用于声明变量,和var 类似,但是所声明的变量只在代码块中有效,不存在变量提升,有暂时性死区. 1.只在代码块中有效 和var ...

  8. 【ES6基础】let、const命令和变量的结构赋值

    ES5声明变量(2):var .function ES6声明变量(6):var.function.let.const.import和class 1.let命令和const命令 (1)let和const ...

  9. ES6学习(二)基础命令

    一.Let 和 const  作用域的概念:在es5之前是有两个作用域,一个是全局作用域,另外一个是函数作用域,在es6中就多了这样一个块作用域.在这里let 和 const 就是传说中的块作用域,它 ...

随机推荐

  1. CentOS下二进制包/源码安装方式的MySQL卸载步骤

    查看当前系统mysql 运行状态 [root@zendlinux ~]# ps -ef |grep mysql root 1153 1 0 15:40 ? 00:00:00 /bin/sh /usr/ ...

  2. 在centos6.x上安装teamviewer

    首先下载公钥: # wget http://www.teamviewer.com/link/?url=354858 # rpm --import TeamViewer_Linux_PubKey.asc ...

  3. Informatica 9.5安装部署

    Informatica  结构 1个或多个资源库(Respository) PowerCenter数据整合引擎是基于元数据驱动的,提供了基于数据驱动的元数据知识库(Repository),该元数据知识 ...

  4. 电话面试问答Top 50 --[伯乐在线]

    今年是2015年,在过去几年中,电面(电话面试)是筛选程序员职位候选人的最流行的方式.它让雇佣双方很容易互相了解对方,候选人不需要去未来雇主的所在地,面试官也不用做额外的安排.这是我介绍程序员面试问题 ...

  5. Emacs快捷键(较全)

    C = Control M = Meta = Alt | Esc Del = Backspace 基本快捷键(Basic) C-x C-f "find"文件, 即在缓冲区打开/新建 ...

  6. C# 数据类型转换 显式转型、隐式转型、强制转型

    C# 的类型转换有 显式转型 和 隐式转型 两种方式. 显式转型:有可能引发异常.精确度丢失及其他问题的转换方式.需要使用手段进行转换操作. 隐式转型:不会改变原有数据精确度.引发异常,不会发生任何问 ...

  7. 等待事件P1 P2 P3含义

    从以下两个视图中查到的session中,有P1,P2,P3参数select * from v$sessionselect * from v$session_waitselect * from v$se ...

  8. HDU4578 线段树(区间更新 + 多种操作)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4578  , 线段树的区间更新 + 多种操作,好题. 虽然是比较裸的线段树,但是比较麻烦,并且有很多细节 ...

  9. codeforces 17C Balance(动态规划)

    codeforces 17C Balance 题意 给定一个串,字符集{'a', 'b', 'c'},操作是:选定相邻的两个字符,把其中一个变成另一个.可以做0次或者多次,问最后可以生成多少种,使得任 ...

  10. Hadoop Spark 基础教程

    0x01  Hadoop 慕课网 https://www.imooc.com/learn/391 Hadoop基础 慕课网 https://www.imooc.com/learn/890 Hadoop ...