编程向导-JavaScript-基础语法-块语句

梦里繁花落尽,此情未央,此意难忘,弦虽断,曲犹扬。!

与技术共同呼吸,与程序员共命运。世树科技 承“技驱动,理致胜”理念、国风编程。

块语句

块语句(Block)用于组合零个或多个语句。该块由一对大括号 {} 界定,块内形成块级作用域,块作用域内定义的变量将在离开块作用域后立即被回收

{StatementList;
}

块级作用域

ES5 只有 全局作用域函数作用域,没有块级作用域,这带来很多不合理的场景:

  • 内层变量可能会覆盖外层变量
  • 用来计数的循环变量泄露为全局变量。

因此,ES6 引入了块级作用域,明确允许在块级作用域之中声明函数。在 ES6 的块级作用域之中,函数声明语句的行为类似于 let,在块级作用域之外不可引用;但又有别于 let 命令,允许重复声明同名函数且存在函数变量提升。

块级作用域中的函数特征:

  • 允许在块级作用域内声明函数。
  • 函数声明类似于 var,即会提升到全局作用域或函数作用域的头部。
  • 内层作用域声明的函数不干扰外层作用域的函数。

var

通过 var 声明的变量没有块级作用域。在语句块里声明的变量作用域是其所在的函数或者 <script> 标签内,你可以在语句块外面访问到它。

换句话说,语句块不会生成一个新的作用域。尽管单独的语句块是合法的语句,但在 JavaScript 中你不会想使用单独的语句块,因为它们不像你想象的 C 或 Java 中的语句块那样处理事物。

var a = 1;
{var a = 2;
}
console.log(a); // 2

let 和 const

相比之下,使用 letconst 声明的变量是有块级作用域的。

let a = 1;
{let a = 2;
}
console.log(a); // 1
const a = 1;
{const a = 2;
}
console.log(a); // 1

注意块级作用域里的常量声明 const c = 2 并不会抛出 SyntaxError: Identifier 'a' has already been declared 这样的语法错误,因为这是一个新的作用域。

function

函数声明同样被限制在声明它的语句块内。

foo('outside'); // TypeError: foo is not a function
{function foo(location) {console.log('foo is called ' + location);}foo('inside'); // 'foo is called inside'
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/743164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习系列62:Agent入门

1 anget介绍和openai标准接口 agent的核心是其代理协同工作的能力。每个代理都有其特定的能力和角色&#xff0c;你需要定义代理之间的互动行为&#xff0c;即当一个代理从另一个代理收到消息时该如何回复。 agent目前大多使用openai标准接口调用LLM服务&#xff0c;说明如下。…

XmlHttpRequest responseType: ‘stream‘ 图片代理服务器

它是一个存在于原生 XMLHttpRequest 对象中的属性。在 Web API 中&#xff0c;XMLHttpRequest 对象用于发送 HTTP 或 HTTPS 请求到服务器&#xff0c;并接收响应。responseType 属性就是用来指定预期从服务器返回的响应数据的类型。 默认值 responseType的默认值为json&#x…

Netty线程模型详解

文章目录 概述单Reactor单线程模型单Reactor多线程模型主从Reactor多线程模型 概述 Netty的线程模型采用了Reactor模式&#xff0c;即一个或多个EventLoop轮询各自的任务队列&#xff0c;当发现有任务时&#xff0c;就处理它们。Netty支持单线程模型、多线程模型和混合线程模型…

linux内建命令/内部命令之caller

1.caller介绍 linux内建命令caller是用来打印函数的调用者信息&#xff0c;需将其放入到函数中才能生效。 2.样例 [rootelasticsearch ~]# cat caller.sh #!/bin/bashfunction1 () {caller 0 }function1 #line 8 [rootelasticsearch ~]# sh caller.sh 8 main caller.sh…

程序员的三重境界:码农,高级码农、程序员!

见字如面&#xff0c;我是军哥&#xff01; 掐指一算&#xff0c;我在 IT 行业摸爬滚打 19 年了&#xff0c;见过的程序员至少大好几千&#xff0c;然后真正能称上程序员不到 10% &#xff0c;绝大部分都是高级码农而已。 今天和你聊聊程序员的三个境界的差异&#xff0c;文章不…

DETR Doesn’t Need Multi-Scale or Locality Design

论文名称&#xff1a;PlainDetr 发表时间&#xff1a;ICCV2023 开源代码 作者及组织&#xff1a; Yutong Lin,Yuhui Yuan等&#xff0c;来自西安交大&#xff0c;微软亚洲研究院。 前言 自Detr以来&#xff0c;后续paper的改进的方向&#xff1a;主要是将归纳偏置重新又引入进…

react的高阶组件怎么用?

在 React 中&#xff0c;高阶组件&#xff08;Higher-Order Component&#xff0c;HOC&#xff09;是一种函数&#xff0c;接受一个组件作为参数&#xff0c;然后返回一个新的增强型组件。高阶组件本质上是一个函数&#xff0c;其目的是重用组件逻辑、增强组件功能以及在不改变…

pinia优化重复请求

目录 1 前言 2 使用步骤 2.1 安装pinia 2.2 定义一个store 2.3 在父组件即index.vue中调用方法 2.4 子组件使用获取到的值 1 前言 在我们的页面中常常存在多个组件&#xff0c;多个组件可能会对某个接口发送多次请求&#xff0c;为了避免这种情况&#xff0c;我们就需要使…

基于左逆的三点法测距,MATLAB函数

基于左逆的三点法MATLAB程序 不一定能用&#xff0c;可以借鉴&#xff0c;在锚点数量极少的时候&#xff0c;右拟无法使用&#xff0c;可以使用这个左逆&#xff08;当然&#xff0c;直接用pinv也行&#xff09; function [p_out] triposition(R_calcu,baseP) % p [5,5;10,…

分布式微服务 - 3.服务网关 - 4.Gateway

分布式微服务 - 3.服务网关 - 4.Gateway 项目示例&#xff1a; 项目示例 - 3.服务网关 - 3.Gateway 内容提要&#xff1a; 基本使用&#xff1a;配置方式、代码方式内置断言、自定义断言内置局部过滤器、自定义内置和全局过滤器 文档&#xff1a; 官网官网文档 基本使用…

重建3D结构方式 | 显式重建与隐式重建(Implicit Reconstruction)

在3D感知领域&#xff0c;包括3D目标检测在内&#xff0c;显式重建和隐式重建是两种不同的方法来表示和处理三维数据。它们各自有优势和局限&#xff0c;适用于不同的场景和需求。 显式重建&#xff08;Explicit Reconstruction&#xff09; 显式重建是指直接构建场景或物体的三…

云计算 3月12号 (PEX)

什么是PXE&#xff1f; PXE&#xff0c;全名Pre-boot Execution Environment&#xff0c;预启动执行环境&#xff1b; 通过网络接口启动计算机&#xff0c;不依赖本地存储设备&#xff08;如硬盘&#xff09;或本地已安装的操作系统&#xff1b; 由Intel和Systemsoft公司于199…

DEAP 自定义交叉操作

在遗传算法中&#xff0c;使用DEAP库来实现自定义的交叉操作可以非常灵活。如果你想模拟多个染色体的情况&#xff0c;通过在染色体的特定区间进行交叉&#xff0c;你需要自定义一个交叉函数。以下是一个示例&#xff0c;展示如何实现一个自定义的交叉函数&#xff0c;该函数允…

libigl 网格面片随机赋色

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 libigl的赋色方式非常简单,它统一由一个Eigen矩阵来进行管理,我们在进行赋色等操作时,只需要修改该矩阵即可(法向量等特征也是类似的操作)。 二、实现代码 //igl #include <igl/readOBJ.h> #include &l…

JVM简单调优

jdk自带了许多对jvm进行监控的程序&#xff0c;例如JVisualVM、jstack等等。 现在进行一些简单的对jvm的监控。 我们可以使用JVisualVM来对堆区进行图形化监控。 我们可以在命令行输入jvisualvm&#xff0c;然后就进入了jvisualvm的图形化界面。 然后我们随便执行一个主方法…

CDQ分治+树状数组,LOJ6270. 数据结构板子题

一、题目 1、题目描述 有 n 个区间&#xff0c;第 i 个区间是 [l_i,r_i]&#xff0c;它的长度是 r_i-l_i。 有 q 个询问&#xff0c;每个询问给定 L,R,K&#xff0c;询问被 [L,R] 包含的且长度不小于 K 的区间数量。 你想&#xff0c;像这种板子题&#xff0c;你随手写&#x…

gen_arrow_contour_xld

生成一个箭头轮廓算子 gen_arrow_contour_xld( : Arrow : Row1, Column1, Row2, Column2, HeadLength, HeadWidth : ) 该算子一般配合 area_center (region, Area, Row, Column) orientation_region (region, Phi) 算子使用&#xff0c;生成一个箭头轮廓。 area_center_xld…

C#+datax实现定时增量同步

要使用C#和DataX实现定时增量同步&#xff0c;你可以使用以下步骤&#xff1a; 1. 安装DataX&#xff1a;首先&#xff0c;确保你已经安装了DataX。你可以从DataX的官方仓库中获取最新版本。 2. 配置DataX 任务&#xff1a;创建一个DataX任务&#xff0c;定义源&#xff08;sou…

springcloud gateway网关动态配置限流

上一篇记录了gateway网关的基础功能和配置&#xff0c;并且使用了默认的限流功能。 springcloud gateway网关-CSDN博客 这里简单记录一下gateway网关集成mybatisPlus实现动态限流。gateway网关默认的限流方式各项限流参数都是在配置文件中配置&#xff0c;不够灵活&#xff0…

【LLMs+小羊驼】23.03.Vicuna: 类似GPT4的开源聊天机器人( 90%* ChatGPT Quality)

官方在线demo: https://chat.lmsys.org/ Github项目代码&#xff1a;https://github.com/lm-sys/FastChat 官方博客&#xff1a;Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90% ChatGPT Quality 模型下载: https://huggingface.co/lmsys/vicuna-7b-v1.5 | 所有的模…