ES6知识点整理let和const的应用

【TIDB】TiDB认证考试PTCA 练习题 题库 TiDB认证考试PTCA 练习题 题库 阅读详情

关于 let

  • let是小作用域的变量的声明
{
   var a = 12;
   let b = 15;
   {
     console.log(a); // 12
     console.log(b); // 15
   }
 }
  • let 是块级作用域,不会被提升;var是函数级的变量,存在变量提升,外部可访问
console.log(a); // Uncaught ReferenceError: a is not defined,直接报错
let a = 12; // let定义的变量不能进行变量的提升
console.log(b); // undefined
var b = 12;

// 上面的过程存在变量提升过程如下:

/*
var b;
console.log(b);
b = 12;
*/
  • {} 块级作用域,子集可访问,外部不可访问
{
  var a = 12;
  let b = 15;
  console.log(b);  // 15
}
console.log(a); // 12
console.log(b); // Uncaught ReferenceError: b is not defined
  • let 在for循环中有效, var 在for循环外仍有效
for(var i=0;i<5;i++) {}
console.log(i); // 5 

for(let m=0;m<5;m++){}
console.log(m); // Uncaught ReferenceError: m is not defined
  • 变量在外部定义后,在内部输出,然后再次使用let关键词声明,那么之前输出会【失效】报错
var a = 18;
var b = 10;
fun();
function fun(){
  console.log(b); // 10
  console.log(a); // Uncaught ReferenceError: a is not defined
  let a;
}
  • 使用let声明的变量唯一, 不能重复声明
let a;
var a; // Uncaught SyntaxError: Identifier 'a' has already been declared
  • {} 块级作用域等效于立即执行函数
var config = (function () {
 var res = [];
  res.push(1);
  res.push(2);
  res.push(3);
  return res;
})();

console.log(config); // [1,2,3]
let config;
{
  config = [];
  config.push(1);
  config.push(2);
  config.push(3);
}
console.log(config); // [1,2,3]
  • 严格模式下的函数不会被提升
'use strict';
function a(){console.log(1);}
(function () {
  a(); // 去除'use strict' 之后 报错:a is not a function,加上'use strict'之后正常,输出1
  if(false) {
    function a(){console.log(2);} // 此处重新声明和赋值了一个a函数,上面输出1的时候表示没有被提升
  }
})();
  • 使用var在for循环中定义的变量保持最后一个值的状态
var arr = [];
for(var i=0;i<5;i++) {
  arr.push(function () {
    console.log(i);
  })
}
arr[1](); // 5 
  • 使用var在for循环中定义的变量可使用自执行函数和闭包维持变量的状态
var arr = [];
for(var i=0;i<5;i++) {
  arr.push((function (i) {
    return function () {
      console.log(i);
    }
  })(i));
}
arr[1](); // 1
  • 使用let在for循环中定义的变量可自动维持变量的状态
var arr = [];
for(let i=0;i<5;i++) {
  arr.push(function () {
    console.log(i);
  })
}
arr[1](); // 1

关于 const

  • 所有属性同let
  • 使用const定义的是常量不可被修改,而指针对象的地址不可被修改,其属性可以被修改
const a = {
  name:'J'
};
a.name = 'Z';
a.age = 10;
console.log(a); // {name: "Z", age: 10}
a = {}; // 尝试修改引用的地址
console.log(a); // Uncaught TypeError: Assignment to constant variable.
  • 使用Object的freeze进行冻结对象, 严格模式下会报错,非严格模式下无法修改
const a = {
 name:'K'
}
a.age = 13;
console.log(a); // {name: "K", age: 13}
Object.freeze(a);
a.age = 14;
console.log(a); // Uncaught TypeError: Cannot assign to read only property 'age' of object '#<Object>'
STM32入门教程:智能储物柜控制 在这个例子中,我们将使用一个4x4的储物柜,共有16个储物格。我们了解了硬件准备、储物柜电路设计、STM32的基本配置、储物柜控制代码的编写以及测试和调试等方面的知识。根据我们的电路设计,我们需要将一些引脚配置为输出,并将其他引脚配置为输入。在本教程中,我们将使用STM32微控制器来实现一个基本的智能储物柜控制系统。在主函数中,我们将不断循环读取传感器数据,并根据数据的变化来控制储物柜的开关和显示相关信息。这个函数将读取人体感应传感器、温湿度传感器和光照传感器的数据,并将数据存储到相应的变量中。 阅读详情

相关推荐

四足机器人——机械结构

目录 一、四足机器人腿型: 1、并联腿 2、串联腿 3、 腿的布局(关节配置) 二、四足机器人足端设计: 三、四足机器人膝关节驱动: 1、皮带轮驱动: 2、四连杆或者推杆驱动 四、四足机器人机械整体结构设计细节 一、四足机器人腿型: 1、并联腿 优点:受力角度来说,并联腿比串联腿好,并联腿较为灵活。 2、串联腿 优点:运动范围大 3、 腿的布局(关节配置) 为了使机器人具有较好的稳定性,一般会采用比较低的重心。这就导致了机器人腿的髋关节位置需要位于机器人身体的两侧..

m0_58585940的博客 3万+

let知识点总结

1、let关键字声明的变量,只在块中有效 2、let可以提供闭包,并防止循环变量的泄露 3、for特例,小括号是一个独立的作用域,大括号是一个独立的作用域 for(let i = 0; i < 3; i++){ let i = 3; console.log(i); } 4、let不能变量提升 暂时性死区:let不进行变量提升, 它会绑定到一个块作用域上。从块作用域的头部到let声明之间的范围(TDS: temporal dead zone)。 变量提升:var在预编译时将变量产生, 只是数值没有

guoyubo777的博客 959

gephi生成网络关系图_路网拓扑重建专题 (3) 网络图生成

城市道路网建模在获得基础路网之后,需要考虑道路交通网络的描述与表达问题。网络是将现实世界中的事物及其关系进行适当的抽象,构造成由节点和边按照一定规则组成的形式。一个实体网络可以由有限个“节点”集合与“边”集合构成的图表示,即网络表示为。对于一个由个节点组成的无权复杂网络,该图有邻接矩阵,这里。根据研究对象不同,建模方法主要包括原始法[1]和对偶法[2]两种,见图1,字母a-j为交叉口编号...

weixin_39761195的博客 3504

let和const的区别

let和const的区别let与const都是只在声明所在的块级作用域内有效 let用来定义变量,无论是不是严格模式下,声明未初始化的时候,都不会报错,和var作用一样,返回undefined const用来定义常量,而且声明时必须初始化,否则报错const不能修改定义的常量的值 但是可以修改常量的属性值,例如: const a = {b: 9}; a.b = 1; con

qilanbei的博客 987

百度智能云训练图像分割模型+python调用模型并分割图像

目录 训练模型阶段 发布图像分割API 调用图像分割API 创建应用后显示以下两个代码 在pycharm中可以调用API mask解码 依赖库pycocotools安装步骤: 依赖库urllib2的安装 源码下载: 最近上课听老师介绍了一个训练图像分割模型的网站,把数据集上传之后做图像标注,然后进行训练就能得到准确率等指标。 训练模型阶段 图像分割:https://ai.baidu.com/easydl/vision/ 图像分割-->创建模型-->上传数据--&gt

icecreamdinner的博客 1389

从零开始:如何用PSINS工具箱构建你的第一个IMU误差模型

本文详细介绍了如何使用严恭敏教授开发的PSINS工具箱构建IMU误差模型,涵盖从基础参数设置到高级误差建模的全过程。通过imuerrset函数配置陀螺零偏、随机游走等核心参数,并结合实战案例展示消费级MEMS器件的误差建模方法,帮助用户提升惯性导航系统的精度与可靠性。

weixin_29284885的博客 323

typescript let和const区别

typescript let和const区别 https://www.cnblogs.com/xyyou/p/11673095.html 全局声明 var声明在函数体外,所声明的变量为全局变量。 varname="张三"; var所声明的全局变量会作为window的一个属性,可以使用"."来引用。如上例的name引用: console.log(window.name) 注意:非严格模式下,声明在函数体内的变量,把声明语句的var去掉,那么所声明的变量也是全局变量。 作用域 v...

kuangben2000的博客 1831

【异常】安装hermes-agent提示Git克隆仓库网络中断 fetch-pack: unexpected disconnect while reading sideband packet

本文分析了Git克隆仓库时出现网络中断错误的常见原因及解决方案。报错表现为连接被远程主机关闭、管道破裂或数据包意外终止,通常由网络不稳定、仓库过大或配置不当引起。提供了5种优先级排序的解决方法:1)使用浅克隆减少数据量;2)优化Git配置参数;3)切换网络或配置代理;4)检查SSH密钥设置;5)改用HTTPS方式克隆。特别推荐先尝试「浅克隆+HTTPS」组合方案快速验证,若问题持续再根据具体报错深入排查。文中包含详细的命令示例和配置说明,适合不同网络环境下的Git用户参考。

奶爸的编程之路,也就一周冷个三天 1422

var、let和const的知识点

ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const。 let 声明的变量只在 let 命令所在的代码块内有效。 const 声明一个只读的常量,一旦声明,常量的值就不能改变。 var和let、const的区别: 1.var声明的变量会挂载在window上,而let和const声明的变量不会 2.var声明变量存在变量提升,let和const不存在变量提升 3.let和const声明形成块作用域 4.同一作用域下let和const不能声明同名变量,而var可以

weixin_43825727的博客 196

MySQL数据库面试题(2022版)

序列号 内容 链接 1 Java基础知识面试题(2022版) https://blog.csdn.net/qq_43061290/article/details/124023797 2 Java集合容器面试题(2022版) https://blog.csdn.net/qq_43061290/article/details/124043363 3 Java异常面试题(2022版) https://blog.csdn.net/qq_43061290/article/details/124....

拉格朗日的学习笔记 1万+

如何在 UniApp 中接入讯飞语音听写功能 文末附vue3+vue2完整代码

在开发过程中,我遇到了讯飞接口返回空数据的问题。通过仔细检查传送的每一帧数据,我发现问题出在第一帧的配置信息以及 Base64 数据的切片。确保每一帧的数据正确且符合接口要求,问题就能够得到解决。希望这个过程能帮助你在项目中顺利对接讯飞语音识别。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1001

*每日一题(三七)let length = 10 function fn(){ console.log(this.length) } var obj = { length:5,

题目描述:写出打印结果,并解释为什么 let length = 10; function fn(){ console.log(this.length); } var obj = { length:5, method:function(fn){ fn(); arguments[0](); } }; obj.method(fn,1)...

MFWSCQ的博客 3250

爬虫Incapsula reese84加密案例:Etihad航空

声明:该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。

老衲爱洗头的博客 2430

如何用 es5 写 const 和 let

前言 无意逛某论坛,看到某位博主当面试官的经历,说是准备一道简单的面试题,可是面试者几乎没有一个答出来的。我看了下。便是如何用 es5 的方式实现一个 const。我也懵逼了,我去面试肯定也是答不出来的。仔细一想不禁觉得这个题目很妙,于是整理一下如何用 es5 实现一个 const 和 let 实现 let let 大家应该用的非常熟悉了,定义一个仅作用于该代码块的变量。首先想到的是去 babe...

weixin_34150224的博客 3300

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

ES6 知识点整理

ES6核心知识点摘要 变量声明:let/const具有块级作用域和暂时性死区,const声明常量时引用类型属性可修改。 箭头函数:继承外层this,不可作构造函数,无arguments对象。 模板字符串:反引号支持多行文本和变量嵌入(${x})。 解构赋值:从数组/对象快速提取值,简化数据操作。 异步处理:Promise管理异步状态,async/await以同步写法处理异步。 数据结构:Set自动去重,Map支持任意类型键。 Class与模块化:类语法糖实现继承,import/export拆分代码模块。 高

黄同学的博客 1482

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ES6整理:let和const命令

ES6介绍 ECMA国际标准化组,他们希望这种语言成为国际化标准兼容大部分主流浏览器,所以ECMAscript就是js的一种写作规格。ES6在2015年提出的语法,在以前大部分浏览器没有完全识别ES6语法可以在node.js等框架内进行使用,但是现在ES6语法已经被大部分浏览器所支持,可以在页面上直接运行。用ES6完全替代ECMAscript标准不太现实,所以在2016年对ECMAscript的...

jytbf的博客 309

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Let,Var,Const区别整理

作用域:(es6) calss>function>if(){}=for(){} CONST: Const是一个定义初始化变量的关键字,该变量一旦初始化就不能再改变,只能在块作用域和函数作用域使用。const不能在class作用域定义,只能在function,if,for定义使用,不能再其外部使用,只能在当前块作用域使用,const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。 本质:const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址...

qq_40677590的博客 1072

ECMAScript6(ES6)标准之let、const关键字与块级作用域

隔了两周没有更新 今天开始整理ES6的知识 先来看看ES6增加的两个声明变量的关键字 let与const块级作用域我以前就写过一篇文章介绍了作用域的分类 传送门:理清JS中的词法、静态、动态、函数、块作用域 里面就谈到了块级作用域 在ES6之前 我们声明变量只能用var 并且作用域的机制是函数作用域(with关键字、catch子句是特例)if(true){ var i = 1

尐轩web前端网络日志 2919

ES6 中的let 与 const关键字

ES6 中的let 与 const关键字 简介 let和const是es6新增加的两个关键字 let关键字 用法 let 声明的变量只在 let 命令所在的代码块内有效,不能重复声明 { let a = 0; a //此时输出 0 } a // 此时报错 ReferenceError: a is not defined const关键字 const 声明一个只读变量,声明之...

归子莫的博客 671

ES6学习 第一章 let 和 const 命令

前言: 最近开始看阮一峰老师的《ECMAScript 6 入门》(以下简称原文)学习ECMAScript 6(下文简称ES6)的知识,整理出一些知识点加上我的理解来做成文章笔记。按照章节为单位一个章节一篇笔记。 文章代码与目录结构和原文不同。 这一章原文链接 let 和 const 命令 。 let let 是用来声明一个变量。 不同与var会存在变量提升(下文有介绍),let所声明的变量值只在let命令所在的代码块内有效。 同一个作用域(下文有介绍)不可使用 let 重复声明同一个变量。 注意: 声明变

gssggssg的博客 343

复习ES6的let、const和ES5的var —— 总结

let和const是 ES6 新增的命令,用于声明变量,这两个命令跟 ES5 的var有许多不同,并且let和const也有一些细微的不同,在认真阅读了阮一峰老师的文档后,发现还是有一些不知道的细节,重新整理了一下,分享给各位. 内容: var和let/const的区别 1、块级作用域 2、不存在变量提升 3、暂时性死区 4、不可重复声明 5、let、const声明的全局变量不会挂在顶层对象下面 const命令两个注意点: 1、const 声明之后必须马上赋值,否则会报错 2、const 简单类型一旦声明

weixin_46419373的博客 262

ES6学习整理笔记let和const命令

一、let 命令 es6新增了let命令,用来声明变量,用法类似于var,let命令只在所在的代码块里有效。 { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1 可以清楚的看到,let变量报错,var则没事。 不存在变量提升 //var console.log(foo); // 输出...

qq_42692851的博客 256

关于阅读 ES6-let 和 const 命令整理的问题

1、JavaScript声明变量的方式有哪些? 答:六种:var function let const class import 2、ES5和ES6有什么区别? 答:ES5是ECMAScript的第五次修订,在2009年完成标准化; ES6是ECMAScript第六次修订,在2015年完成,也叫做ES2015; ES6是在ES5的基础上进行了改进,比ES5更加的简洁,有效的提升了开发的效率; ES6还增加了一些特性:let和const 、Map和Set、 async和await、 Promise、 f

千里之行,始于足下! 476

ES6 let const 箭头函数 strict 严格模式

前言 ECMAScript 6.0于2015 年 6 月正式发布 ES6是一个泛指,含义是 5.1 版以后的 JavaScript 的下一代标准,涵盖了 ES2015、ES2016、ES2017 等等。 ES6针对2015年之前的浏览器都不支持。 let let 定义一个有范围得变量。不是window的属性 let 定义的变量仅限于循环及花括号语句块内 "use strict"; var ...

蒲公英芽的博客 2207

ES6系列之 let 和 const

为什么需要块级作用域 ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。 通过var声明变量存在变量提升: if (condition) { var value = 1 } console.log(value) 复制代码初学者可能会认为当变量condition为true时,才会创建value。当condition为false时,不会创建value,结果应该是报错。...

weixin_33957648的博客 147

es6变量let和const的区别与新特性

es6新增的变量let和const的知识点,作为一个web前端开发人员是必学必会的,今天整理下发到博客里,便于复习,也希望对大家有帮助吧。文章讲到,声明变量var和let的区别,let和const的共同特性,const具有的特性。 一、声明变量var和let的区别: 1. let不允许重复声明变量: <script type="text/javascript"> let d...

web前端开发博客 1820
上一篇: CSS3知识整理之动画,Flex布局,多列布局,Web字体和兼容度
下一篇: ES6知识点整理class的应用
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值