




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 协议书和合同怎么查找
- 租地协议书合同
- 求兼职主播合同协议书
- 租房协议书没有合同
- 双人餐饮合同协议书
- 合同违约协议书范本
- 运费协议书合同
- 种植基地终止合同协议书
- 男女合同协议书
- 网络员考试题及答案
- DINEN1706铝和铝合金铸件化学成分和机械性能(中文版)
- 朝韩语二级笔译实务样题
- 小儿推拿技术操作规范
- 科大讯飞:2022智能教育发展蓝皮书-智能技术助力教学减负增效
- 大学生器乐训练基础知到章节答案智慧树2023年丽水学院
- 企业数字化转型的国外研究现状共3篇
- T-GDWCA 0033-2018 耳机线材标准规范
- NB/T 10533-2021采煤沉陷区治理技术规范
- 无形资产转让协议书(2篇)
- GB/T 37356-2019色漆和清漆涂层目视评定的光照条件和方法
- GB/T 262-2010石油产品和烃类溶剂苯胺点和混合苯胺点测定法
评论
0/150
提交评论