iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript ES新特性块级作用域
  • 409
分享到

JavaScript ES新特性块级作用域

2024-04-02 19:04:59 409人浏览 安东尼
摘要

目录1.块级作用域是什么 2.为什么需要块级作用域 3.与函数声明 前言: 在学习块级作用域之前需要我们对作用域有个了解,所谓的作用域就是代码当中的某个成员起作用的范围。 1.块级作

前言:

学习块级作用域之前需要我们对作用域有个了解,所谓的作用域就是代码当中的某个成员起作用的范围。

1.块级作用域是什么

所谓的块级作用域,就是该变量只能在声明时的代码块或者子代码块中使用。在ECMAScript 2015以前的版本中是不存在块级作用域的,而ECMAScript 2015提供的let关键字,使javascript出现了块级作用域,示例代码如下所示



// 全局作用域
let a = 100; // 全局变量
(function () {
  // 函数作用域
  let b = 200; // 局部变量
})()
if (true) {
  // 块级作用域
  let c = 300; // 局部变量
}
console.log(a); // 100
console.log(b); // 抛出异常
console.log(c); // 抛出异常


2.为什么需要块级作用域

ECMAScript 5只存在全局作用域和函数作用域,没有块级作用域。这种情况出现一些问题:

局部变量可能会覆盖全局变量


var v = 100;
(function(){
  console.log(v); // undefined 
  var v = 200;
})


在循环体中用于计数的变量泄露为全局变量


// 定义一个循环体
for (var v = 0; v < 10; v++) {
  console.log("这是一个 for 循环"); // 这是一个 for 循环 * 10
}
console.log(v); // 10

在循环完毕之后如果不手动释放此变量,其生命周期跟随此脚本生存,占用内存。

3.与函数声明

ECMAScript5标准规定函数的声明只能在全局作用域和函数作用域中,不能再块级作用域中声明。

情况一:


if (true) {
  function f() {}
}


情况二:


try {
  function f() {}
} catch(e) {
  // ...
}

上面两种函数声明,根据ECMAScript5的规定都是非法的。

ECMAScript 2015标准规定在块级作用域声明函数类似于使用了var关键字,即在当前块级作用域外无法访问。


{
  function fun() {
    console.log('this is fun');
  }
}
fun(); // this is fun
// 上面的等同于下面的函数
{
  var fn = function () {
    console.log('this is fn');
  }
}
fn(); // this is fn
// 如果使用 let 关键字 则在块级作用域外无法访问
{
  let f = function () {
    console.log('this is f');
  }
}
f(); // 抛出异常 描述信息为 ReferenceError: f is not defined

到此这篇关于JavaScript ES新特性块级作用域的文章就介绍到这了,更多相关ES新特性块级作用域内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript ES新特性块级作用域

本文链接: https://www.lsjlt.com/news/158952.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript ES新特性块级作用域
    目录1.块级作用域是什么 2.为什么需要块级作用域 3.与函数声明 前言: 在学习块级作用域之前需要我们对作用域有个了解,所谓的作用域就是代码当中的某个成员起作用的范围。 1.块级作...
    99+
    2024-04-02
  • JavaScript ES新特性块级作用域怎么使用
    这篇文章主要讲解了“JavaScript ES新特性块级作用域怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript ES新特性块级作用域怎么使用”吧...
    99+
    2023-06-21
  • javascript有块级作用域吗
    这篇文章主要介绍javascript有块级作用域吗,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 在JavaScript中,没有块级作用域的概念。在块级语...
    99+
    2024-04-02
  • JavaScript块级作用域怎么用
    今天小编给大家分享一下JavaScript块级作用域怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起...
    99+
    2024-04-02
  • javascript的块级作用域有什么作用
    今天小编给大家分享一下javascript的块级作用域有什么作用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我...
    99+
    2024-04-02
  • JavaScript高级 ES7-ES13 新特性详解
    目录1. ES71. Array Includes2. 指数exponentiation运算符2. ES81. Object values entries2. String Padd...
    99+
    2023-02-06
    js ES7-ES13 新特性 ES7-ES13 新特性
  • JavaScript块级作用域绑定的实现流程
    目录1.var声明和变量提升2.块级声明和临时死区3.禁止重复声明4.块级作用域绑定的最佳实践1.var声明和变量提升 无论是在函数作用域亦或是全局作用中使用var声明的变量,都会在...
    99+
    2022-12-30
    JavaScript块级作用域绑定 JS作用域绑定
  • JavaScript块级作用域的实现原理是什么
    这篇文章主要讲解了“JavaScript块级作用域的实现原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript块级作用域的实现原理是什...
    99+
    2024-04-02
  • JavaScript块作用域、重新声明变量的方法
    这篇文章主要介绍了JavaScript块作用域、重新声明变量的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript块作用域、重新声明变量的方法文章都会有所收获...
    99+
    2024-04-02
  • JavaScript块级作用域绑定以及状态提升详解
    目录前言作用域/执行上下文var 声明块级声明不声明的变量1. 不使用关键字声明变量2. 使用 var 声明的变量var 声明和块级声明的区别全局作用域绑定状态提升块级绑定的最佳实践...
    99+
    2024-04-02
  • 怎么理解ES6块级作用域
    这篇文章主要介绍“怎么理解ES6块级作用域”,在日常操作中,相信很多人在怎么理解ES6块级作用域问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解ES6块级作用域”的疑惑...
    99+
    2024-04-02
  • JS ES新特性之变量的解耦赋值怎么用
    小编给大家分享一下JS ES新特性之变量的解耦赋值怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.数组的解耦赋值1.1数组解耦赋值是什么ECMAScript 2015中允许按照一定模式,从数组和对象中提取...
    99+
    2023-06-21
  • 5个实用的JavaScript新特性
    目录前言1.# 使用"Object.hasOwn"替代“in”操作符2.# 使用"#"声明私有属性3.# 超有用的&q...
    99+
    2024-04-02
  • javascript的高级特性实例用法
    本篇内容主要讲解“javascript的高级特性实例用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript的高级特性实例用法”吧!js中没有cl...
    99+
    2024-04-02
  • es6语法有没有块级作用域
    这篇文章主要讲解了“es6语法有没有块级作用域”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“es6语法有没有块级作用域”吧! e...
    99+
    2024-04-02
  • JavaScript ECMAScript6所有新特性怎么用
    这篇文章主要介绍“JavaScript ECMAScript6所有新特性怎么用”,在日常操作中,相信很多人在JavaScript ECMAScript6所有新特性怎么用问题上存在疑惑,小...
    99+
    2024-04-02
  • JavaScript中块作用域的示例分析
    这篇文章主要介绍了JavaScript中块作用域的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JavaScript 块作用域通过 ...
    99+
    2024-04-02
  • Go1.18 新特性之多模块Multi-Module工作区模式
    目录背景举例:未发布的 moduleGo1.18 新特性:多模块(Multi-Module)工作区模式Go1.18 工作区模式初始化一个新的工作区go.work 文件结构go.wor...
    99+
    2024-04-02
  • ES6中块级作用域的示例分析
    这篇文章给大家分享的是有关ES6中块级作用域的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。varvar声明之函数作用域和全局作用域。来段代码体会一下:function&...
    99+
    2024-04-02
  • mysql8新特性binlog_expire_logs_seconds有什么作用
    这篇“mysql8新特性binlog_expire_logs_seconds有什么作用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作