var 的变量提升

2023-11-19

var 的变量提升

var 定义的变量的定义时存在变量提升现象。

console.log(a); // undefined
var a = 10;	
console.log(a); // 10

原理:

  • js 引擎在渲染代码时,将变量声明部分和函数声明部分提升到函数的顶部,并赋值为undefined 。
  • let/const 在声明时,也存在变量提升现象,但是会出现暂时性死区,在代码未执行到赋值语句时,调用变量会报错。

上述代码相当于

var a;  // 未赋值默认为undfined
console.log(a);
a = 10;
console.log(a);

优先级

函数声明的优先级高于变量声明的优先级

fn();
var a = 10;
function fn() {
	console.log(a);	//	undefined
}
console.log(a);	//	10

由于函数声明提升优先级高于变量声明提升。

上述代码相当于:

function fn(){			// 函数声明优先高
	console.log(a);
}
var a;	// 变量声明优先级低
fn();
a = 10;
console.log(a);

其他:

  • let/const 也存在变量提升,但是其设置暂时性死区,在未给变量赋值时访问会报错。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

var 的变量提升 的相关文章

  • 在 Angular 中使用 Vue 组件

    我有一个用 Vue 构建的项目 我想在 Angular 应用程序中重用 Vue 应用程序中的组件 这样我就不必从头开始重建每个组件 我在medium上看到了这个教程 如何在 Angular 应用程序中使用 Vue 2 0 组件 https
  • chrome 调试器承诺在暂停时不会解析?

    也许我没有正确调试承诺 但基本上 如果您在断点处停止并运行异步代码 它实际上不会完成 直到您恢复执行为止 这是一个问题 调试器允许您快速试验多个 api 方法 但如果您恢复它 您就不能 debugger now type the follo
  • Oo 任何 IDE 中的 javascript 代码补全

    你知道有什么IDE可以自动完成这种代码吗 我这里有一个 javascript 类生成器 function var core bind function method scope if method instanceof Function t
  • VBA / HTML / jQuery 选择自动完成 - 在列表中选择

    我正在尝试使用 Excel 中的 VBA 在网站的列表中选择一个值 这不是一个 正常列表 该网站使用 jQuery 选择自动完成 如下所示 example http davidwalsh name demo jquery chosen ph
  • 如何在ASP.NET Webform中使用Jquery表单插件?

    我遇到了这个插件 http malsup com jquery form getting started http malsup com jquery form getting started 我想知道如何在 ASP NET WebForm
  • 在网页上的文本框中键入内容时删除所有空格

    我如何在用户打字时即时删除输入到文本框中的空格 function var txt myTextbox var func function txt val txt val replace s g txt keyup func blur fun
  • jquery 验证错误位置

    这看起来很简单 但我无法弄清楚 我正在使用 jquery 验证插件 我验证所有文件 但我想要的是在输入文本行中显示验证消息警报 例如在电子邮件输入中 请填写电子邮件地址 但现在它出现在所有字段下 在我的html中
  • jQuery 选择 # id 以单词为前缀,计数器为后缀

    有没有办法用 jQuery 选择所有带有前缀 my 和后缀 0 9 的 id 像这样的 my 1 4 还是可以用循环来实现 div div div div div div div div div div 第一个想法 似乎效果很好 div i
  • 动画进度元素值

    我有一个progress元素 该元素如下所示 div class container div div div
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 即使我可以监视其他方法,也无法监视事件处理程序

    我想使用 Jest Jasmine Enzyme 测试 React 中的事件处理程序 MyComponent js import React from react class MyComponent extends React Compon
  • jquery window.open 在 ajax 成功中被阻止

    尝试在我的 ajax 成功调用中打开一个新的浏览器窗口 但是 它被阻止为弹出窗口 我做了一些搜索 发现用户事件需要绑定到 window open 才能避免这种情况发生 我还找到了这个解决方案 您可以在 ajax 之前打开一个空白窗口 然后在
  • 是否可以使用 javascript 测试用户的浏览器/操作系统是否支持给定类型的链接?

    是否可以使用 javascript 或其他任何东西 测试用户的操作系统 浏览器是否支持给定的 url 方案 例如 大多数仅使用网络邮件的用户计算机上未设置 mailto 是否有可能以某种方式捕获单击 mailto 链接的尝试并弹出比浏览器错
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • 如何在 Angular 中从父组件访问子组件?

    I have mat paginator在子组件a中 如下所示 子组件 html
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • JavaScript 代码在不使用 ActiveX 的情况下截取网站屏幕截图

    我有一个用户与之交互的 JavaScript 应用程序 我需要保存当前界面的外观 裁剪出我需要的部分 或者通过指定div只拍摄我需要的部分 然后发送回服务器 显然任何外部服务都无法做到这一点 我需要一个 JavaScript 或Flash
  • Jquery - 通过在字符串中构建 id 的 id 获取元素

    我在使用 jquery 元素时遇到问题 我正在 var 中构造名称 例如 var myId myGotId myId attr title changed myId 返回空 我想通过 id 获取我的元素 但动态构建我的 Id 连接字符串 编
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • 在 GWT 中,在任何主机页标记上添加事件处理程序

    我想为任何标签添加 MouseOver 事件处理程序 举个例子 我想为旧版 HTML 页面中的每个锚点页面添加事件处理程序 继GWT指南 http code google com webtoolkit doc 1 6 DevGuideUse

随机推荐

  • 无向图染色问题-dfs剪枝

    无向图染色问题 问题描述 给定一个无向图 要求用最少的颜色将节点染色 限制是不能让相邻节点染上相同的颜色 算法 使用dfs 为节点分配不同的颜色进行尝试 计算每种分配所需的颜色数 最终进行回溯 取得最小的颜色数 代码 C include
  • OpenAI最新发布通用人工智能路线图!AGI比想象中来得更快!

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 点击进入 gt 计算机视觉 微信技术交流群 转载自 机器之心 编辑 泽南 小舟 通用人工智能的出现可能只是技术发展历程中的一个小节点 因为 AGI 或许可以加速自身的进
  • 点云/网格模型的体积计算

    点云体积计算 有时用激光扫描设备扫描零件或者用无人机进行测量后会想知道它们的体积 比如下面的土堆 如果扫描得到的数据是一系列三维点云 那么体积就比较难求 因为如何定义物体的边界比较困难 一种方法是提取三维点云的凸壳 包络体 然后再进行计算
  • 第五章 数据清洗

    5 1数据去重 5 1 1完全去重 点击 获取字段 配置csv文件输入的属性 Name Gender City 配置唯一行属性 选择要去重的属性 Name Gender City 运行结果 完全去重成功 5 1 2不完全去重 将文本分隔符替
  • 支付宝短视频平台创作分成激励项目

    没想到支付宝也开通了中视频计划 这波羊毛算是蒿定了 最近啊 马爸爸火速上线了支付宝创作分成计划 明显就是抄的抖音中视频计划 目前还在内测阶段 补贴的力度非常大 错过的话就只能拍大腿了 看到短视频这么的火爆 巨头大佬们都想分一杯羹啊 阿里也不
  • Linux下MySQL启动、停止、重启的几种方式

    一 启动 1 使用service 启动 service mysqld start 2 使用 mysqld 脚本启动 etc inint d mysqld start 3 使用 safe mysqld 启动 safe mysqld 二 停止
  • 互联网产品上线流程,及面试题分类

    一 基础情况 问题1 自我介绍 3mins 与自我介绍 1min 问题2 为什么你要来这个行业 问题3 为什么你要来这个岗位 问题4 为什么你能胜任这份工作 问题5 为什么你要离职 问题6 过往经历STAR故事描述 问题7 你的职业规划是什
  • php mes代码,完整MES代码(含客户端和server端)

    实例简介 完整的代码 带数据库文件 包含客户端 服务端 实例截图 核心代码 MES 源代码 MES 源代码 MES 源代码 dll AjaxControlToolkit dll AspNetServer dll AxInterop CELL
  • el-form 校验单个字段

    单个校验 核心为 validateField 而非validate
  • 关于编译器生成默认构造函数的理解

    构造函数 构造函数是创建类类型对象时 由编译器自动调用 用来初始化对象的函数 它保证每个数据成员都有一个合适的初始值 并且在对象的生命周期内只调用一次 函数名与类名相同 无返回值 构造函数可以重载 什么是默认构造函数 无参的构造函数 全缺省
  • JAVA中的while do-while循环以及for循环的深刻理解 入门 小白必看

    循环 循环 循环 循环的作用 提出问题为什么需要循环 解决问题循环的出现 while 前序 循环 while循环的语法与流程以及细节 do while 后序循环 do while循环的语法和流程 while和do while 之间的区别 f
  • 人工智能顶会顶刊以及SCI,IF,核心,分区

    人工智能顶会顶刊以及SCI IF 核心 分区 标签 常识 刚上研究生的时候 老师总会让大家看论文 并且还要求要看好文章 要看顶会或者顶刊上面的文章 但是刚开始就不知道什么是顶会或者顶刊 所以这里整理了一下在人工智能方面的顶刊或者顶会 比如c
  • HacksudoAliens

    HacksudoAliens arp scan interface eth0 192 168 1 0 24 nmap sC sV p sT 192 168 1 251 sS sT sA sW sM TCP SYN Connect ACK W
  • Java自动生成bean、dao、service、impl、controller(JPA初版)

    关自动生成代码我是这么想的 初步 目录 一 拿到所有表名 列名 列类型数据 C3P0连接数据库并获取所需数据 所需数据对象 测试拿到的数据 结果 二 用FreeMarker模板生成对应JPA架构Java文件 编写模板 bean ftl be
  • C语言实验——打印金字塔

    Problem Description 输入n值 打印下列形状的金字塔 其中n代表金字塔的层数 Input 输入只有一个正整数n Output 打印金字塔图形 其中每个数字之间有一个空格 Sample Input 3 Sample Outp
  • 美创科技发布“韧性”数据安全防护体系框架

    4月13日 美创科技数据安全产品架构升级发布会顺利举办 会上 美创重磅发布 韧性 数据安全防护体系框架 全新数据安全框架 以 资产 为中心 由内而外 以 看见 基石 旨在通过构建 弹性和韧性 可见性 适应性进化 的数据安全防护能力 帮助用户
  • Python打印输出数组中全部元素的方法

    学习Python的人都知道数组是最常用的的数据类型 为了保证程序的正确性 需要调试程序 因此 需要在程序中控制台中打印数组的全部元素 如果数组的容量较小 例如 只含有10个元素 采用print命令或print函数可以答应出数组中的每个元素
  • 记一次挖矿病毒应急处置全过程&挖矿处置基本操作

    记一次挖矿病毒应急处置全过程 挖矿处置基本操作 一 处置过程 1 查看第一位的pid号 32535 2 进入 tmp X11 unix 目录 其中 11 文件中写的是32535 01 文件中写的是守护进程pid号10092 目录里的文件不一
  • 【Vue】Vue基础自用笔记&Day03_①Vue生命周期②Vue网络请求③Vue动画

    Vue基础 Day03 1 Vue生命周期 this nextTick 方法 2 Vue网络请求 vue resource Axios 3 Vue动画 使用CSS创建动画 或者使用第三方动画库 animate css 使用JS创建动画 使用
  • var 的变量提升

    var 的变量提升 var 定义的变量的定义时存在变量提升现象 console log a undefined var a 10 console log a 10 原理 js 引擎在渲染代码时 将变量声明部分和函数声明部分提升到函数的顶部