下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第JavaScript中的变量提升和函数提升目录前言为什么有变量提升javascript变量提升和函数提升总结
前言
在js中对变量进行操作后打印值经常会出现undefined的现象。其实原因是因为js中有一个叫做变量提升的功
举例:
vardata="lyyyyy";
getData();
functiongetData(){
//第一次打印
console.log("data值为:",data);
vardata="yyyyyyy";
//第二次打印
console.log("data值为:",data);
}
打印的值第一个为undefined,而第二个打印的值为yyyyy.
原因:
在执行getData()方法的时候会在函数内部首先将变量的声明提升到第一步。然后再声明函数内部的函数(如果函数内部有函数的话)。之后才会按照方法内部的逻辑先后顺序执行代码。前两步只是声明!!!看到这里应该就已经知道为什么会有上面那样的结果了。
实际的方法内部代码执行顺序应该是这样的:
functiongetData(){
//一。声明变量
vardata;
//二。声明函数(如果函数内部有函数的话)
//三。按照代码的顺序执行
console.log("data值为:",data);
data="yyyyyyy";
//第二次打印
console.log("data值为:",data);
}
看到拆分后的代码执行顺序对结果也就不迷茫了。
为什么有变量提升
那么为什么会出现变量提升这个现象呢
其实js和其他语言一样,都要经历编译和执行阶段。而js在编译阶段的时候,会搜集所有的变量声明并且提前声明变量,而其他的语句都不会改变他们的顺序,因此,在编译阶段的时候,第一步就已经执行了,而第二步则是在执行阶段执行到该语句的时候才执行。
javascript变量提升和函数提升
变量提升是把变量提升提到函数顶部。需要说明的是,变量提升只是提升变量的声明,并不会把赋值也提升上来。函数提升是把整个函数都提到前面去。函数表达式不能被提升,函数声明形式能被提升。
!DOCTYPEhtml
htmllang="en"
head
/head
body
script
//变量提升
functiontest(){
a=2;
vara;
console.log(a);
//2
}
test();
//变量提升,不会把赋值也提升上来
varv='HelloWorld';
(function(){
varv;
console.log(v);
//undefined
v='Iloveyou';
})();
//函数声明形式能被提升
functionmyTest(){
foo();
functionfoo(){
console.log("helloworld");
//helloworld
}
}
myTest();
//函数表达式不能被提升
functionmyTest2(){
foo();
//fooisnotafunction
varfoo=functionfoo(){
console.log("helloworld");
}
}
myTest2();
/script
/body
/html
!DOCTYPEhtml
htmllang="en"
head
/head
body
script
//输出GoodbyeJack
varname='World!';
(function(){
if(typeofname==='undefined'){
varname='Jack';
console.log('Goodbye'+name);
}else{
console.log('Hello'+name);
})();
//输出HelloWorld!
varname2='World!';
(function(){
if(typeofname2==='undefined'){
name2='Jack';
console.log('Goodbye'+name2);
}else{
console.log('Hello'+name2);
})();
//输出HelloWorld!
varname3='World!';
(function(){
if(typeof3==='undefined'){
varname3='Jack';
console.log('Goodbye'+name3);
}else{
console.log('Hello'+3);
})();
/script
/body
/html
总结
1.js会将变量的声明提升到js顶部执行,因此对于这种语句:vara=2;其实上js会将其分为vara;和a=2;两部分,并且将var
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年阿克苏辅警招聘考试题库附答案详解(黄金题型)
- 2023年那曲辅警招聘考试真题及答案详解(夺冠)
- 2024年上海辅警协警招聘考试真题完整答案详解
- 河南省豫南六市2025年生物高二第一学期期末质量跟踪监视模拟试题含解析
- 江门职业技术学院《刑事诉讼法理论与实务》2024-2025学年第一学期期末试卷
- 河南城建学院《西方社会学理论A》2024-2025学年第一学期期末试卷
- 江苏省宿迁市沭阳县修远中学2026届物理高二上期末学业质量监测模拟试题含解析
- 重庆商务职业学院《网络商务策划与创新实践》2024-2025学年第一学期期末试卷
- 2026届辽宁省大连市第十六中学高一生物第一学期期末达标检测模拟试题含解析
- 安徽省部分高中2025年化学高二上期末统考试题含解析
- 国网网络安全专业考试复习题库大全-2(多选题汇总)
- HR-1-04猎头管理办法
- WH/T 42-2011演出场所安全技术要求第2部分:临时搭建演出场所舞台、看台安全技术要求
- GB/T 3811-2008起重机设计规范
- GB/T 27734-2011压力管道用聚丙烯(PP)阀门基本尺寸公制系列
- GB/T 20346.1-2006施肥机械试验方法第1部分:全幅宽施肥机
- GB/T 20056-2015滚动轴承向心滚针和保持架组件外形尺寸和公差
- GA/T 1068-2015刑事案件命名规则
- 浙江省宁波市镇海蛟川书院2022-2023七年级上学期数学期中试卷+答案
- 论文写作讲座课件
- 双减作业设计初中数学作业设计优秀案例
评论
0/150
提交评论