1、let命令:

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

{let a = 1;var b = 2;}
console.log(b);// 2
console.log(a);// ReferenceError: a is not defined.

结果:

以上代码在代码块之中,分别用let和var声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在它所在的代码块有效。

let命令很合适使用在for循环中。

var oLis = document.getElementsByTagName('li');
for (let i = 0; i < oLis.length; i++) {// ...oLis[i].onclick = function(){console.log(i);// 0 1 2 3 4}
}
console.log(i);  // ReferenceError: i is not defined
// 这是因为上面代码相当与产生了几个块级作用域
{var i=0;oLis[i].onclick = function(){console.log(i);}
}
{var i=1;oLis[i].onclick = function(){console.log(i);}
}
// 以上代码,计数器i只在for循环体内有效,在循环体外引用就会报错。

因为ES5 只有全局作用域和函数作用域,没有块级作用域,这也带来了很多不合理的场景,let实际上为 JS新增了块级作用域。
var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined。
按照一般的逻辑,变量应该在声明语句之后才可以使用。为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。

2、const命令:
       常量是块级作用域,很像使用 let 语句定义的变量。
       const声明一个只读的常量。一旦声明,常量的值就不能改变。
       vconst声明的变量不得改变值,这也就是说,const一旦声明变量,就必须立即初始化,不能留到以后再进行赋值。

const PI = 3.1415;
PI = 3;
console.log(PI);// TypeError: Assignment to constant variable.
// 改变常量的值会报错。

ES6的let、const命令相关推荐

  1. ES6 let和const 命令

    ES6 let 和 const 命令 1. 变量声明 2. 变量提升问题 3. 暂时性死区(TDZ) 4. 块级作用域 4.1 为什么需要块级作用域? 4.2 ES6的块级作用域 4.3 块级作用域和 ...

  2. ES6 let和const命令(3)

    const 用来声明常量.一旦声明,就不能改变. const在声明必须初始化,只声明不赋值会出错 const的作用域与let一样,只在声明的块级作用域有效. const命令声明的常量也不提升,同样存在 ...

  3. es6 let和const命令(1)

    基本用法 ES新增了let命令,用于声明变量.其用法类似于var,但是所声明的变量只在let命令所在的代码块中有效. for(let i = 0;i<5;i++) {} console.log( ...

  4. 1. ES6 let 和 const 命令

  5. ES6之let(理解闭包)和const命令

    ES6之let(理解闭包)和const命令 最近做项目的过程中,使用到了ES6,因为之前很少接触,所以使用起来还不够熟悉.因此购买了阮一峰老师的ES6标准入门,在此感谢阮一峰老师的著作. 我们知道,E ...

  6. es6 var、let、const命令

    1.let和var <1>let声明的变量仅在块级作用域内有效: var声明的变量在全局有效: <2> var变量乐意在声明之前使用,输出undefined; let 不可以, ...

  7. 【ES6】let命令、const命令、解构赋值

    let命令 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是也存在新的特性. let所声明的变量,只在let命令所在的代码块内有效,避免全局污染.(适用于for循环) {let a ...

  8. 【面试题】【ES6】let和const命令 (面试必看)

    给大家推荐一个实用面试题库 1.前端面试题库 (面试必备)            推荐:★★★★★ 地址:前端面试题库 1.let命令 基本用法 用法类似于var,但是所声明的变量,只在let命令所在 ...

  9. 关于ES6中let 和 const 命令的用法以及注意事项:

    let命令: 基本用法: let定义: 用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. <script> //let代码块内部定义的变量,与var ...

最新文章

  1. 成功解决ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'
  2. 【Python】学习笔记五:缩进与选择
  3. 恐龙机器人钢索恐龙形态_四川恐龙多,自贡是个窝——恐龙,我来了
  4. Matlab optimtool优化(Optimization)工具箱
  5. MySQL in 查询,并通过 FIELD 函数按照查询条件顺序返回结果
  6. 有轻功:用3行代码让Python数据处理脚本获得4倍提速
  7. php的mbstring模块安装折腾记录
  8. 微博拟全球发售1100万股 发售价不超388港元
  9. 好的设计善于利用PSD模板,轻松搞定促销海报!
  10. java中while循环练习,java练习 七、循环语句 do……while循环语句
  11. 问题六十八: 着色模型(shading model)(0)——《Ray Tracing from the Ground Up》代码的移植
  12. C中的C文件与h文件辨析(转)
  13. Julia(编程语言)
  14. python#魔兽游戏#英雄联盟lol#地图
  15. lenovo服务器换系统重装系统_联想电脑怎么重装系统|联想电脑重装系统步骤
  16. 基于Python的课程管理系统【100010023】
  17. 我爱赚钱吧:建网站也是可以赚钱的③
  18. Harpoon: an OSINT / Threat Intelligence tool
  19. 企业拼团APP商城开发流程6步曲
  20. PAT 计算机程序设计能力考试--大纲

热门文章

  1. vue解决----You may use special comments to disable some warnings.Use // eslint-disable-next-line to i
  2. 传统API管理的“矛”与测试过程之间的“盾”
  3. 【巨杉数据库SequoiaDB】巨杉 Tech | SequoiaDB SQL实例高可用负载均衡实践
  4. jetbrain家的fleet(已获得预览权限)直接对标vscode , fleet有望超过vscode吗?今天我们实际操作下
  5. 3分钟看完凯迪克金奖作品
  6. 科创板正式开板,新增的这些交易规则,事关你的“钱包”!
  7. chkdsk修复移动硬盘错误
  8. 【四足机器人支撑腿反作用力规划】未简化的动力学模型规划反作用力 +运动学模型雅可比+虚功原理规划关节扭矩方法
  9. tp5 微信公众号,自动回复图文,扫一扫功能实现
  10. 【课设必备】-Matlab设计串联滞后超前校正-纯干货