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. 一、angularjs基础了解

    说明:此处比较杂,目前没有统一的总结哦 angularjs 是mvvm框架 加载JS文件总是使用后缀为.min.js的文件,因为这些文件是经过压缩的,能提升应用的启动速度 模块说明: 1.config ...

  2. 新建虚拟机,每次都提示无法连接虚拟设备 ide1:0

    处理方式:看到了这个老哥http://www.cnblogs.com/dean-du/p/6888513.html的博客,发现问题是一样的,所以记录一下. 将虚拟机设置中的CD/DVD选项中的连接更改 ...

  3. Spring3实战第一章 Aop 切面 XML配置

    刚看spring3实战书籍第一章  切面以前没有关注过 现在看到了  随手试验一下 AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Objec ...

  4. 转载:Windows下三分钟搭建Shadowoscks服务器端

    Windows下三分钟搭建Shadowoscks服务器端 之前在V2EX上有人问为啥没人做个在Windows上一键运行Shadowsocks服务器端的程序,我只想说……这是因为没人关注我的libQtS ...

  5. 《Java并发编程实战》文摘

    更新时间:2017-06-03 <Java并发编程实战>文摘,有兴趣的朋友可以买本纸质书仔细研究下. 一 线程安全性 1.1 什么是线程安全性 当多个线程访问某个类时,不管运行时环境采用何 ...

  6. ZT --- extern "C"用法详解 2010-08-21 19:14:12

    extern "C"用法详解 2010-08-21 19:14:12 分类: C/C++ 1.前言: 时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus ...

  7. SAP ABAP里数据库表的Storage Parameters从哪里来的

    如何查看ABAP数据库表的storage parameter? 事务码SE11,utilities->Database Object->Database Utility: 点这个Stora ...

  8. linux性能系列--cpu

    一.先看看什么是CPU? 回答:中央处理器(Central Processing Unit)的缩写,即CPU,CPU是电脑中的核心配件,只有火柴盒那么大,几十张纸那么厚,但它却是一台计算机的运算核心和 ...

  9. JavaScript的DOM_StyleSheet操作内联或链接样式表

    使用 style 属性,仅仅只能获取和设置行内的样式,如果是通过内联<style>或链接<link>提供的样式规则就无可奈何了,使用 getComputedStyle 和cur ...

  10. pushlet服务端推送——多播

    版权声明:本文为博主牟云飞原创文章.未经博主同意不得转载. https://blog.csdn.net/myfmyfmyfmyf/article/details/36364337 ---------- ...