javaScript之变量提升

ENVI_基于无人机数据的果树提取与相对健康监测 一、数据处理 1.计算植被指数VDVI或GDVI:Band Math / Spectral Indices 2.制作掩膜:ROI——Threshold——Subset 二、单地块果树提取 1.绘制感兴趣区shp 2.确定果树提取参数:Count Crops 3.输出果树矢量文件:Convert Crops To Shapefile 4.果树相对健康程度分析:Calculate Crop Me... 阅读详情

在平时开发过程中,我们都会遇到变量提升。

但却没有好好研究过,重视基础很重要!!!

一、变量

定义:变量是存储信息的容器。

特点:是松散类型的,也就是说可以用来保存任何类型的数据。

var turbo;
//未经初始化的变量,会保存一个特殊的值undefined;
console.log(turbo)  //undefined


function test(){
    var a = 2;
}
test();
console.log(a) //发生错误。
//在函数中定义变量,那么这个变量会在函数退出后就会被销毁。


function test1(){
    b = 7;
}
test1();
console.log(b)   //7
//省略了var操作符,b变成了全局变量。

二、变量提升

JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。

1、变量提升

JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。

a = 1;
console.log(a);
var a ;

//这就是一个典型的变量提升。先使用 再声明。

JavaScript 只有声明的变量会提升,初始化的不会。

var a = 1;
console.log(a);  //1
//已经初始化  得到a为1

再来看另外一个例子:

console.log(a);
var a = 1;

得到结果:undefined


b=5;
console.log(b);
var b = 10;

得到结果:undefined

//以上例子证明:只有声明的变量会提升,初始化的不会。
 

注意:JavaScript 严格模式(strict mode)不允许使用未声明的变量。

2、函数提升

首先来看一个例子:

test();

function test(){
    console.log("a");
}

以上是一个简单的函数提升例子,在js预解析的时候,函数会被提升至最顶部,之后进行执行。

注意:使用匿名函数的方式不存在函数提升,因为函数名称使用变量表示的,只存在变量提升。

var test = function(){
    console.log("a");
}

function test(){
    console.log("b");
}

test();

得到结果:a;

//第一个test是一个变量,因此这个变量的声明也将提升到顶部,而变量的赋值依然保留在原来的位置。需要注意的是,函数优先,虽然函数声明和变量声明都会被提升,但是函数会首先被提升,然后才是变量。

平时不注意的同学可能会犯一个错误,下面来看看:

test();
var test = function(){
    console.log("a");
}

//结果:报错。

//为什么呢?
//其实这里是初始化了一个test变量。我们知道初始化不存在变量提升,所以这里会出问题。

 

[实践篇]13.13 再来梳理一下HAB的设计原理 HAB全称为Hypervisor Abstraction,即硬件抽象,主要用于提供对HOST OS硬件资源的访问。 阅读详情

相关推荐

OneOS远程升级能力实操演示 | OTA升级

OneOS远程升级能力实操演示,差分算法提升效率,OTA升级,OTA差分算法,全量升级、压缩升级、差分升级,有线网络连接,bootloader,升级平台,在线差分包制作,触摸屏以及GUI图形操作

OneOS是中国移动针对物联网领域推出的轻量级操作系统 2011

javascript变量提升详解

js变量提升 对于大多数js开发者来说,变量提升可以说是一个非常常见的问题,但是可能很多人对其不是特别的了解。所以在此,我想来讲一讲。 先从一个简单的例子来入门: a = 2; var a; console.log(a); 你觉得以上的代码会输出什么?是输出undefined吗?如果是按照程序的自上而下执行的话,那么这一段代码确实是输出undefined。然而,javascript并不是严格的自...

weixin_30270889的博客 731

波分复用技术原理

波分复用原理 把不同波长的光信号复用到同一根光纤中进行传送,这种方式我们把它叫做波分复用( Wavelength Division Multiplexing ) 一根光纤被划分为多个波道,多个波长以一定的间隔隔开,在光纤中独立传输。 波分复用应用演示 如果将WDM系统看作交通系统,光纤可以看作是多个车道的公用道路。 各种类型的业务就像货物一样,被打包装载到车辆中。 车辆按照分配的车道行驶至目的地,完成货物的运输。 想要提高波分复用系统的传输容量,就要增加波道数量或是提升单波传...

m0_63251770的博客 9999

【JavaScript】JS为什么要进行变量提升?

前言: 用过的JavaScript的应该都知道,它有变量提升的机制,不过可能很少去考虑为什么会有变量提升的机制,现在就来看一下为什么要进行变量提升。 1. 什么是变量提升? 变量提升实际上很容易理解,就是说在任何位置所声明的变量或函数,都会自动“提”到最前面,就好像它们是在函数的开头声明的一样。 2. 为什么进行变量提升? 首先我们要知道,JS在拿到一个变量或者一个函数的时候,会有两步操作,即解析和执行。 在解析阶段,JS会检查语法,并对函数进行预编译。解析的时候会先创建一个全局执行上下文环境,先把代码

公众号:前端充电宝 4683

1020空心杯电机驱动设计与ESP32实战

空心杯电机是一种高动态响应的直流微特电机,其驱动本质是解决电感负载下的大di/dt启动、反电动势耦合与电流纹波抑制问题。核心原理在于建立包含内阻、电感和反电动势的等效电路模型,并据此匹配开关器件、PWM参数与采样闭环。技术价值体现在小体积下实现毫秒级响应、低噪声(>30kHz)、高精度电流保护(±50mA)及热鲁棒性。典型应用于微型航模、手持云台与精密执行器等对功率密度和动态性能敏感的嵌入式系统。本文以1020规格空心杯电机为对象,基于ESP32平台完成从MOSFET选型、32kHz硬件PWM生成到INA2

weixin_42298164的博客 590

AES攻击方法 :差分密码分析 boomerang attack飞去来器攻击

AES具有123比特的分组长度,三种可选的密钥长度(128,192,256) AES是一个迭代型密码,轮数依赖于密钥长度。如果密钥长度为128比特,则轮数为10;如果密钥长度为192比特,则轮数为12;如果密钥长度为256比特,则轮数为14; 混淆(Confusion) 混淆是为了让密钥与密文的统计信息之间的关系变得复杂,从而增加通过统计方法进行攻击的难度。混淆可以通过各种代换算法实现,如S盒、乘法(加)与异或等运算组合,为非线性部件。 扩散(Diffusion) 扩散是为了让明文的单个比特影像到

m0_67105022的博客 3492

什么是 js 变量提升 (Javascript Hoisting)

Javascript是一门容易遭人误解的语言,但是它的强大毋庸置疑。个人觉得,要想深入理解Javascript语言,首先必须对其基本的概念(例如:Scope,Closure,Hoisting等)要真正理解。今天想通过自己的理解来对Javascript Hoisting(国内一般翻译为 变量提升)做一个阐述:   在解释Javascript Hoisting之前,先看一下几段代码: ...

weixin_30825199的博客 2039

AURIX-TC3xx-GTM详解六-DPLL(Digital PLL Module)-寄存器1-DPLL寄存器

主要有下图这些寄存器2、

m0_69929716的博客 443

JS中的变量提升总结

1.JS代码执行顺序 我们直觉上会认为JS的代码在执行时是由上到下一行一行执行的,但实际并不完全正确,下面的例子会证明: a = 'haha' var a console.log(a) 上面的代码会输出什么呢? 如果按照我们认为的由上到下一行一行执行,那么应该输出undefined,但是实际结果是'haha'。 接着再看一个代码: console.log(a) var a = 'haha' 那这个输出的是什么? 鉴于上面代码表现出来的非自上而下的特点,有可能认为是’haha’。或者有认为变量a没有声明,

蔡姐的博客 3269

金蝶云星空应用开发初级考试题目汇总

摘要:本文为金蝶云星空应用开发初级考试题目汇总

2401_86113757的博客 3799

AI智能体项目管理框架agent-pm:从原理到实战的多智能体协作指南

在人工智能和自动化技术快速发展的今天,多智能体系统已成为实现复杂任务自动化的重要技术路径。其核心原理在于通过任务分解、角色分配和状态管理,让多个AI智能体像人类团队一样协同工作,从而突破单个模型的性能边界。这种架构的技术价值在于将软件工程中成熟的项目管理方法论引入AI领域,显著提升了自动化流程的可预测性、可观测性和可复用性。在实际应用场景中,多智能体协作框架能够高效处理从代码开发、文档撰写到数据分析等一系列任务,尤其适合需要多步骤、多专业协同的复杂项目。本文聚焦的agent-pm框架,正是这一领域的典型实践

weixin_42533910的博客 715

【js】JavaScript的变量提升、函数声明提升

JavaScript中的变量提升(Hoisting)是指在代码执行前,变量和函数的声明会被提升到当前作用域的顶部。对于var声明的变量,只有声明会被提升,赋值不会,因此访问未赋值的变量会返回undefined。函数声明会被整体提升,而函数表达式则不会。let和const虽然也会被提升,但在初始化前访问会触发暂时性死区(TDZ),导致报错。建议在新项目中使用let和const,避免使用var,并将变量声明放在使用之前,以提高代码的清晰度和可维护性。函数提升是JavaScript特有的行为,其他语言如Pytho

m0_56800366的博客 1167

KUKA机器人在自动运行时,动作不流畅,每个点位都有停顿的解决办法

KUKA机器人在自动运行时,动作不流畅,每个点位都有停顿的解决办法

Robot_PLC_HMI_Automation 4582

javascript/js变量提升和函数提升

javascript引擎的工作模式是“先解析后执行”,先解析申明的变量/函数,然后再一行一行执行代码。这造成的结果,就是所有变量/函数的声明语句,都会被提升到代码的头部,这就叫做变量/函数提升(hoisting) javascript执行分两个阶段:解析阶段(解析变量申明、解析函数申明、解析形参)、执行阶段 变量提升: 示例1: var a; console.log(a);//undefined a=2; 解析阶段:解析找到var关键字定义的变量,创建一个变量a的内存,给未赋值的变量一个默认值undefi

Tumbler_A的博客 345

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

JS变量提升

什么是变量提升 首先我们要知道js执行前有一个“预编译”过程, 预编译主要有两个任务: 声明所有var变量(初始为undefined)。 解析定义式函数语句。 变量提升的概念:函数和变量的声明会被js的解释器放到最上面。 在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域。 变量提升 栗子1 function fn1() { ...

铁臂阿凡达的博客 2175

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JavaScript进阶:变量提升、函数提升、js解析机制

对变量提升、函数提升和js解析机制的理解。什么是变量提升呢,如果不能很好的理解变量提升,程序就容易出现一些问题。理解变量提升,也可帮助我们很好的弄懂js的解析机制。 1.什么是变量提升? 变量提升定义 变量提升就是将变量声明提升到它所在作用域的最开始的部分。 变量提升的理解 理解一:该变量不管是在作用域的哪个地方声明的,都会提升到作作用域的最顶上去。 理解二:变量可以先使用再声明。 ...

tomorrownan的博客 777

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

js中的变量提升详解

首先了解一下什么是变量提升?先来看一下一个小案例 a = 10; var a; console.log(a); //你认为输出的结果是什么 我们一般而言代码从上而下执行,a应该输出undefined,但是实际输出的却是10,这是为什么呢?就js而言代码并不是严格按照从上而下的执行顺序。 这其中就涉及到了变量提升的问题。它会将当前作用域的所有变量的声明提升到程序的顶部,怎么理解...

qq_45335128的博客 363

【JavaScript】JS高级-变量提升机制

《知识补充》 一、栈内存 1、代码执行的地方,也叫做执行环境栈ECStack; 2、存储变量、基本数据类型; 3、当栈内存被销毁后,存储的基本数据类型的值也随之销毁; 4、栈内存怎么销毁:包含全局执行上下文、函数执行上下文;也是利用null原理;关闭页面。 ==》全局执行上下文一般在页面关闭后销毁; 函数执行上下文一般在函数进栈执行完后就出栈销毁,如果被引用,则不出栈。 二、堆内存 1、存储引用数据类型; ==》堆内存释放销毁后,引用值也随之销毁; ==》堆内存释放:(谷歌的垃圾回收机制)当堆内存没有被任何

zhangankang的博客 633

【JavaScript】变量提升以及var对变量提升的

转载于:https://blog.youkuaiyun.com/recoluan/article/details/79253223 仅供个人记录使用,侵删 什么是变量提升 //变量声明提升 function test() { var a = "1"; var f = function(){}; var b = "2"; var c = "3"; } //上述代码等价于 function test() { var a,f,b,c; a = "1"; f =

qq_39021074的博客 296

js变量提升

今天遇到一道js的面试题,知道是关于变量提升的问题,但是还是有点犹豫,赶紧复习了下,原谅自己太菜 原题如下 function say(){ console.log(a) //undefined console.log(b) //b is not defined var a='aaaa' let b=...

qq_45219069的博客 183

JavaScript的变量及变量的提升

JavaScript的变量及变量的提升 一.JavaScript变量的命名规范 变量名必须以字母,$ 或 _开头 驼峰命名 aName 不可以用纯数字命名 js对大小写敏感 不可以使用关键字命名 var let const delete break for if 二.JavaScript的变量 变量:字面意思,变化的量。 变量的使用分为声明和赋值两个步骤。 // 1.变量的声明 var 关键字 var x;//x是变量名 x是用来储存变量值的 // 2.变量的赋值

qq_39155611的博客 1094

考察js变量提升面试题

varname=‘World!’; (function(){ varname if(typeofname===‘undefined’){ name=‘Jack’; console.log(‘Goodbye‘+name); ...

weixin_44022064的博客 1808

一文介绍JavaScript中的变量提升到底是什么

JavaScript必备细节知识点 是时候搞清楚JavaScript中的变量提升问题了! JS是一门弱解释性语言,这意味着面对一个文档,JS会选择先解释再执行。 通俗来讲,就是先通篇扫描所有js代码,将所有的声明都提升到该作用域的最前面,再去考虑需要操作的代码。 这里所有的声明包括: - 变量的声明 console.log(a); var a=5; 经过变量提升 上面代码在执行时的逻辑是这样的:...

前端小白菜的菜园子 301

JavaScript 变量提升和函数提升

前言 When we learn a new technology,we need to know what it is,why we learn it and how to use it best 今天在写代码的时候,突然发现了一个非常有意思的现象 其实就是两行代码 console.log(a); var a = 1; 当将这两段代码运行在浏览器中时,会发现浏览器会报打印undefined,但...

bleeding_sky的博客 259

JavaScript中变量的提升(JavaScript中,变量的声明部分,会提升,变量的初始化部分,不会提升)

参考网页https://www.runoob.com/js/js-hoisting.html 参考网页https://blog.youkuaiyun.com/czh500/article/details/103458933 文档中说,JavaScript 只有声明的变量会提升,初始化的不会。 按照JavaScript 只有声明的变量会提升,初始化的不会这句话的意思,我是不是可以理解为以下这样:...

一只苟延残喘的卑微蝼蚁 480

JavaScript变量提升

变量提升,指的是变量声明总是会被解释器‘提升’到函数体的顶部。 1 当局部变量和全局变量同名时,局部变量会覆盖全局变量;但是看下面程序 <script type="text/javascript" > var x = "全局变量"; function test(){ document.writeln(x+"<br >"); var x="局部变量"...

悄悄quite 341
上一篇: JavaScript之事件队列(event loop)
下一篇: Error: listen EADDRNOTAVAIL 192.168.0.144:8088问题解决
github_turboemily
博客等级 码龄10年 16粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值