ES6学习笔记(一)

简介: 一、let 命令 1、let命令1.1基本用法1.1.1 let用于声明变量类似var,但是let声明的变量只在当前代码块内有效{ let a = 10; var b = 1;}a // ReferenceError: a is not defined.b // 1let命令在for  循环的计数器中很实用。

一、let 命令


 

1、let命令


1.1基本用法

1.1.1 let用于声明变量

类似var,但是let声明的变量只在当前代码块内有效

{
  let a = 10;
  var b = 1;
}

a // ReferenceError: a is not defined.
b // 1

let命令在for  循环的计数器中很实用。

1.1.2  let不存在变量提升

var命令会发送“变量提升”,即变量可以在声明之前使用,值为undefined 正常来说变量使用一定要在声明之后。

1.1.3 暂时性死区

只要块级作用域内存在let命令,它所生命的变量就绑定(binding)这个区域,不受外部影响。

ES6明确规定,在区块中存在letconst命令,这个区块对这些命令声明的变量都是 不能提前使用的,会报错。

总之在代码块之内,Let声明的变量不可提前使用。

1.1.4不允许重复声明

let不允许在相同作用域内重复声明同一个变量。所以不能在函数内部重新声明参数。

function func(arg) {
  let arg; // 报错
}

function func(arg) {
  {
    let arg; // 不报错
  }
}
1.1.5 ES6的块级作用域

letJavaScript新增了块级作用域,允许块级作用域的任意嵌套。

{{{{{let insane = 'Hello World'}}}}};

外层作用域无法读取内层作用域内的变量。

{{{{
  {let insane = 'Hello World'}
  console.log(insane); // 报错
}}}};

内层作用域可以定义外层作用域的同名变量。

{{{{
  let insane = 'Hello World';
  {let insane = 'Hello World'}
}}}};

 

1.1.6 允许块级作用域中声明函数
// 浏览器的 ES6 环境
function f() { console.log('I am outside!'); }

(function () {
  if (false) {
    // 重复声明一次函数f
    function f() { console.log('I am inside!'); }
  }

  f();
}());
// Uncaught TypeError: f is not a function

ES6的块级作用域允许声明函数的规则只在使用大括号的前提下成立,否则就会报错。

 1.1.7 do表达式

块级作用域是一个语句,将多个操作封装在一起,没有返回值。

使得块级作用域可以变为表达式,也就是说可以返回值,办法就是在块级作用域之前加上do,使它变为do表达式。

 

let x = do {
  let t = f();
  t * t + 1;
};

上面代码中,变量x会得到整个块级作用域的返回值。

 

相关文章
|
11月前
|
存储 JSON 监控
微服务链路追踪原理,一文搞懂!
本文重点讲解微服务链路追踪(Microservices Distributed Tracing),介绍其原理、架构及工作流程。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
微服务链路追踪原理,一文搞懂!
|
传感器 算法 安全
蓝牙中频率跳变技术的原理及其应用
蓝牙中频率跳变技术的原理及其应用
899 9
|
11月前
|
存储 人工智能 弹性计算
阿里云弹性计算_加速计算专场精华概览 | 2024云栖大会回顾
2024年9月19-21日,2024云栖大会在杭州云栖小镇举行,阿里云智能集团资深技术专家、异构计算产品技术负责人王超等多位产品、技术专家,共同带来了题为《AI Infra的前沿技术与应用实践》的专场session。本次专场重点介绍了阿里云AI Infra 产品架构与技术能力,及用户如何使用阿里云灵骏产品进行AI大模型开发、训练和应用。围绕当下大模型训练和推理的技术难点,专家们分享了如何在阿里云上实现稳定、高效、经济的大模型训练,并通过多个客户案例展示了云上大模型训练的显著优势。
105581 10
|
11月前
|
机器学习/深度学习 人工智能 算法
深度学习和强化学习有什么区别呢
【10月更文挑战第23天】深度学习和强化学习有什么区别呢
|
调度 C++
PV操作知识点
PV操作知识点
720 1
开发指南043-自定义注解
现代Java编程大量使用注解,可以很方便的简化编程,提高编程效率
|
Java Spring 容器
深入理解@EnableAspectJAutoProxy的力量
深入理解@EnableAspectJAutoProxy的力量
707 0
|
API 芯片
STM32 使用HAL库调试内部RTC经验总结
STM32 使用HAL库调试内部RTC经验总结
1036 1
|
测试技术 运维
并发模式与 RPS 模式之争,性能压测领域的星球大战
本文是《如何做好性能压测》系列专题分享的第四期,该专题将从性能压测的设计、实现、执行、监控、问题定位和分析、应用场景等多个纬度对性能压测的全过程进行拆解,以帮助大家构建完整的性能压测的理论体系,并提供有例可依的实战。
13155 116
|
Java 测试技术 Maven
SpringCloud项目编译打包执行单元测试(修复单元测试数量为0)-流水线sonarqube扫描jacoco插件展示覆盖率
SpringCloud项目编译打包执行单元测试(修复单元测试数量为0)-流水线sonarqube扫描jacoco插件展示覆盖率