返回顶部
首页 > 资讯 > 前端开发 > 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://lsjlt.com/news/83143.html(转载时请注明来源链接)

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

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

  • 微信公众号

  • 商务合作