广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何提升全局变量var
  • 170
分享到

如何提升全局变量var

2024-04-02 19:04:59 170人浏览 泡泡鱼
摘要

这篇文章主要讲解了“如何提升全局变量var”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何提升全局变量var”吧!一、提升全局变量 varvar 

这篇文章主要讲解了“如何提升全局变量var”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何提升全局变量var”吧!

一、提升全局变量 var

var tmp = new Date();  function f() {     console.log(tmp);     if (false) {         var tmp = "hello";     } } f();

js新手往往会以为将正常打印出日期,而实际输出的确是`undefined`!

> var tmp = new Date(); > function f() { ...     console.log(tmp); ...     if (false) { .....         var tmp = "hello"; .....     } ... } > f(); undefined

这是因为在函数f()的内部,var被提升到定义域的顶部,实际执行为:

var tmp = new Date();  function f() {     var tmp;// 提升到这里,将全局的tmp覆盖了。var默认赋值为undefined     console.log(tmp);     if (false) {         var tmp = "hello";     } } f();

也就是说var不仅提升,而且将tmp初始化赋值为undefined。

二、如何才能正常输入日期呢?

解决方案是将global-scope的var替换为block-scope的let:

var tmp = new Date();  function f() {     //var tmp;// 提升到这里,将全局的tmp覆盖了。var默认赋值为undefined     console.log(tmp);     if (false) {         let tmp = "hello";     } } f(); // 2021-04-02T10:52:30.983Z

这是因为let定义的是local-variable.

三、TDZ临时DeadZones

更加诡异的案例,来单独看let:

var tmp = new Date();  function f() {     console.log(tmp);     let tmp = "hello";  } f();

你原以为将会如常打印出时间,但却报错tmp未定义。

ReferenceError: Cannot access 'tmp' before initialization

这是因为 tmp 被提升,其实际执行为:

var tmp = new Date();  function f() {     let tmp; // 提升在这里     console.log(tmp);     let tmp = "hello";  } f();

然而区别于var的是,tmp仅仅被提升,却不会被自动赋值为undefined,因此会报错`ReferenceError`.

该问题就是传说中的TDZ (temporal dead zone)。解决方案也简单,就是将所有的let或者const等全部都写到最上面。

感谢各位的阅读,以上就是“如何提升全局变量var”的内容了,经过本文的学习后,相信大家对如何提升全局变量var这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何提升全局变量var

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

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

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

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

下载Word文档
猜你喜欢
  • 如何提升全局变量var
    这篇文章主要讲解了“如何提升全局变量var”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何提升全局变量var”吧!一、提升全局变量 varvar ...
    99+
    2022-10-19
  • var在for循环变量泄漏为全局变量怎么解决
    这篇文章主要介绍“var在for循环变量泄漏为全局变量怎么解决”,在日常操作中,相信很多人在var在for循环变量泄漏为全局变量怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”var在for循环变量泄漏...
    99+
    2023-06-20
  • 深入了解JavaScript中let/var/function的变量提升
    目录前言1. let存在提升2. var/function的变量提升2.1 var的变量提升2.2 function的变量提升3. 总结前言 在我们的印象中,当提到JavaScrip...
    99+
    2022-11-13
  • Vue全局变量和局部变量如何实现
    这篇文章主要介绍“Vue全局变量和局部变量如何实现”,在日常操作中,相信很多人在Vue全局变量和局部变量如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue全局变量和局部变量如何实现”的疑惑有所帮助!...
    99+
    2023-07-04
  • eclipse如何搜索全局变量
    要在Eclipse中搜索全局变量,可以按照以下步骤进行:1. 打开Eclipse并进入要搜索的项目。2. 在Eclipse的菜单栏中...
    99+
    2023-09-07
    eclipse
  • VUE如何定义全局变量
    这篇文章主要介绍了VUE如何定义全局变量,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、全局变量专用模块就是以一个特定模块来组织管理这些全...
    99+
    2022-10-19
  • java如何定义全局变量
    在Java中,可以使用以下两种方式定义全局变量:1. 在类中定义静态变量:静态变量属于类,而不是属于类的实例对象。可以通过类名直接访...
    99+
    2023-08-29
    java
  • android如何定义全局变量
    在Android中,可以通过以下几种方式定义全局变量:1. 使用静态变量:在一个类中定义一个静态变量,并在需要使用的地方引用该变量。静态变量的生命周期与应用程序的生命周期相同,可以在整个应用程序中访问。例如,在一个名为MyApplica...
    99+
    2023-08-11
    android
  • jQuery如何避免全局变量
    这篇文章主要介绍了jQuery如何避免全局变量,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。避免全局变量jQuery与javascript一...
    99+
    2022-10-19
  • python如何定义全局变量
    在Python中,可以使用全局变量来在整个程序中共享数据。以下是定义全局变量的几种方法:1. 在函数外部定义全局变量:```pyth...
    99+
    2023-08-12
    python
  • JavaScript变量声明如何提升
    这篇文章主要讲解了“JavaScript变量声明如何提升”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript变量声明如何提升”吧!变量一个变量...
    99+
    2022-10-19
  • 如何在CSS中使用 var()变量
    今天就跟大家聊聊有关如何在CSS中使用 var()变量,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。定义和使用CSS变量与任何其他CSS定义一样,变量遵循相同的范围和继承规则。使用它...
    99+
    2023-06-08
  • MySQL中如何设置全局变量
    这篇文章将为大家详细讲解有关MySQL中如何设置全局变量,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 ERROR 1418 (HY000): This ...
    99+
    2022-10-18
  • Golang中如何使用全局变量
    本篇文章给大家分享的是有关Golang中如何使用全局变量,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。我们可以基于匿名结构类型创建一个变量集合...
    99+
    2022-10-19
  • nodejs中如何使用全局变量
    nodejs中如何使用全局变量,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.global类似于客户端javascript运...
    99+
    2022-10-19
  • jquery中如何定义全局变量
    在jquery中定义全局变量的方法:1.新建html项目,引入jquery;2.使用var关键字定义全局变量;具体步骤如下:首先,新建一个html项目,并在项目中引入jquery;<script type="text/jav...
    99+
    2022-10-04
  • php如何使用$GLOBALS全局变量
    这篇文章主要介绍了php如何使用$GLOBALS全局变量,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。$GLOBALS — 引用全局作用域中...
    99+
    2022-10-19
  • Python中如何定义全局变量
    今天就跟大家聊聊有关Python中如何定义全局变量,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 声明法该方法是直接在当前模块中进行全局变量定义声明,使用global的声明方式,再进...
    99+
    2023-06-04
  • python如何在函数中改变全局变量
    可以在python中使用global关键字来修改全局变量,具体方法如下:首先,在python中定义一个函数;a = 10def updateGlobal():a = 5updateGlobal()print(a) 输出结果为:10在函数中添...
    99+
    2022-10-10
  • JavaScript中如何进行变量提升
    JavaScript中如何进行变量提升,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。变量提升就好比JavaScript引擎用一个很小的代码起重...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作