ES6新特性一: let和const命令详解


Posted in Javascript onApril 20, 2017

本文实例讲述了ES6新特性中的let和const命令。分享给大家供大家参考,具体如下:

1. let 命令

① 在js中是没有块级作用域的,var 声明的变量作用域是整个函数体,而let可以起到这一作用

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

② 而let可以起到这一作用啊在js中变量和函数的声明会提升到当前作用域最顶部执行。这样就会出现问题。

var a = [];
//函数和变量i会最先进行声明,同时全局变量i经过for循环赋值为10
for (var i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
console.log(i);//10
a[6]();//10

而使用let就解决了这个问题

for (let i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); //6

③ let不像var那样,会发生“变量提升”现象

console.log(a); // a is not defined
let a = 1;

④ let不允许在相同块级作用域内,重复声明同一个变量

// 报错
{
  let a = 10;
  var a = 1;
}
// 报错
{
  let a = 10;
  let a = 1;
}

2. const 命令

① const也用来声明变量,但是声明的是常量。一旦声明,常量的值就不能改变。
② 与let相同也不能在相同块级作用域内重复声明同一个变量。
③ const的作用域与let命令相同:只在声明所在的块级作用域内有效。

const PI = 3.1415;
console.log(PI); // 3.1415
//PI = 3; // Assignment to constant variable.(不能给常量赋值)
//const PI = 3.1;// Identifier 'PI' has already been declared

希望本文所述对大家ECMAScript程序设计有所帮助。

Javascript 相关文章推荐
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
Jul 31 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
Jan 15 Javascript
JavaScript中的object转换成number或string规则介绍
Dec 31 Javascript
JS实现文件动态顺序载入的方法
Mar 07 Javascript
详细解读AngularJS中的表单验证编程
Jun 19 Javascript
JavaScript实现自动消除按钮功能的方法
Aug 05 Javascript
jQuery实现分隔条左右拖动功能
Nov 21 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
Mar 14 Javascript
使用vue-cli webpack 快速搭建项目的代码
Nov 21 Javascript
微信小程序自定义波浪组件使用方法详解
Sep 21 Javascript
Vue将props值实时传递 并可修改的操作
Aug 09 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
Aug 31 Javascript
javascript 正则表达式分组、断言详解
Apr 20 #Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 #jQuery
JS利用cookies设置每隔24小时弹出框
Apr 20 #Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
Apr 20 #Javascript
addEventListener()与removeEventListener()解析
Apr 20 #Javascript
详解用vue-cli来搭建vue项目和webpack
Apr 20 #Javascript
js禁止浏览器的回退事件
Apr 20 #Javascript
You might like
xml+php动态载入与分页
2006/10/09 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
jQuery 选择器详解
2015/01/19 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
Vue实现日历小插件
2019/06/26 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
Python函数参数类型*、**的区别
2015/04/11 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
Python删除n行后的其他行方法
2019/01/28 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
Python如何实现强制数据类型转换
2019/11/22 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
Python 实现简单的客户端认证
2020/07/29 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
10分钟理解CSS3 Grid布局
2018/12/20 HTML / CSS
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
会计毕业生自我鉴定
2013/11/04 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
如何用PHP websocket实现网页实时聊天
2021/05/26 PHP
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技