ES6的let、const命令
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命令相关推荐
- ES6 let和const 命令
ES6 let 和 const 命令 1. 变量声明 2. 变量提升问题 3. 暂时性死区(TDZ) 4. 块级作用域 4.1 为什么需要块级作用域? 4.2 ES6的块级作用域 4.3 块级作用域和 ...
- ES6 let和const命令(3)
const 用来声明常量.一旦声明,就不能改变. const在声明必须初始化,只声明不赋值会出错 const的作用域与let一样,只在声明的块级作用域有效. const命令声明的常量也不提升,同样存在 ...
- es6 let和const命令(1)
基本用法 ES新增了let命令,用于声明变量.其用法类似于var,但是所声明的变量只在let命令所在的代码块中有效. for(let i = 0;i<5;i++) {} console.log( ...
- 1. ES6 let 和 const 命令
- ES6之let(理解闭包)和const命令
ES6之let(理解闭包)和const命令 最近做项目的过程中,使用到了ES6,因为之前很少接触,所以使用起来还不够熟悉.因此购买了阮一峰老师的ES6标准入门,在此感谢阮一峰老师的著作. 我们知道,E ...
- es6 var、let、const命令
1.let和var <1>let声明的变量仅在块级作用域内有效: var声明的变量在全局有效: <2> var变量乐意在声明之前使用,输出undefined; let 不可以, ...
- 【ES6】let命令、const命令、解构赋值
let命令 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是也存在新的特性. let所声明的变量,只在let命令所在的代码块内有效,避免全局污染.(适用于for循环) {let a ...
- 【面试题】【ES6】let和const命令 (面试必看)
给大家推荐一个实用面试题库 1.前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 1.let命令 基本用法 用法类似于var,但是所声明的变量,只在let命令所在 ...
- 关于ES6中let 和 const 命令的用法以及注意事项:
let命令: 基本用法: let定义: 用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. <script> //let代码块内部定义的变量,与var ...
最新文章
- 成功解决ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'
- 【Python】学习笔记五:缩进与选择
- 恐龙机器人钢索恐龙形态_四川恐龙多,自贡是个窝——恐龙,我来了
- Matlab optimtool优化(Optimization)工具箱
- MySQL in 查询,并通过 FIELD 函数按照查询条件顺序返回结果
- 有轻功:用3行代码让Python数据处理脚本获得4倍提速
- php的mbstring模块安装折腾记录
- 微博拟全球发售1100万股 发售价不超388港元
- 好的设计善于利用PSD模板,轻松搞定促销海报!
- java中while循环练习,java练习 七、循环语句 do……while循环语句
- 问题六十八: 着色模型(shading model)(0)——《Ray Tracing from the Ground Up》代码的移植
- C中的C文件与h文件辨析(转)
- Julia(编程语言)
- python#魔兽游戏#英雄联盟lol#地图
- lenovo服务器换系统重装系统_联想电脑怎么重装系统|联想电脑重装系统步骤
- 基于Python的课程管理系统【100010023】
- 我爱赚钱吧:建网站也是可以赚钱的③
- Harpoon: an OSINT / Threat Intelligence tool
- 企业拼团APP商城开发流程6步曲
- PAT 计算机程序设计能力考试--大纲
热门文章
- vue解决----You may use special comments to disable some warnings.Use // eslint-disable-next-line to i
- 传统API管理的“矛”与测试过程之间的“盾”
- 【巨杉数据库SequoiaDB】巨杉 Tech | SequoiaDB SQL实例高可用负载均衡实践
- jetbrain家的fleet(已获得预览权限)直接对标vscode , fleet有望超过vscode吗?今天我们实际操作下
- 3分钟看完凯迪克金奖作品
- 科创板正式开板,新增的这些交易规则,事关你的“钱包”!
- chkdsk修复移动硬盘错误
- 【四足机器人支撑腿反作用力规划】未简化的动力学模型规划反作用力 +运动学模型雅可比+虚功原理规划关节扭矩方法
- tp5 微信公众号,自动回复图文,扫一扫功能实现
- 【课设必备】-Matlab设计串联滞后超前校正-纯干货