JS变量提升原理与用法实例浅析


Posted in Javascript onMay 22, 2020

本文实例讲述了JS变量提升。分享给大家供大家参考,具体如下:

该篇介绍什么是变量提升,写给像我一样的JS新手看的

简单来说变量提升就是 JS会把var变量的声明自动提升到作用域的顶部,即使你不想这样

一个例子: (局部变量与全局变量同名时 , 局部变量覆盖全局变量)

var a="全局变量";
function test()
{
  document.writeln(a);
  var a="局部变量";
  document.writeln(a);
}
test();

上例的两个输出结果是

undefined局部变量

第一个输出并没有输出全局变量a而是undefined ,这就是变量提升导致的

上例等同与下例:

var a="全局变量";
function test()
{
  var a;
  document.writeln(a);
  a="局部变量";
  document.writeln(a);
}
test();

test函数内即使局部变量a还没定义,就已经覆盖了全局变量,可见其声明已经生效了,

变量声明会自动提升到作用域的顶部, 即使该语句并没执行

如下例:

var x=100;
var y=200;
function test()
{
  document.writeln(x);
  document.writeln(y);
  if(false)
  {
    var x=1;
  }
  return;
  var y=2;
}
test();

输出结果:

undefinedundefined

等同如下形式:

var x=100;
var y=200;
function test()
{
  var x,y;
  document.writeln(x);
  document.writeln(y);
  if(false)
  {
    x=1;
  }
  return;
  y=2;
}
test();

那么怎么解决这个问题呢?

用let变量!let变量执行到定义部分才会装载,具体用法请自行查询!

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
获取Javscript执行函数名称的方法
Dec 22 Javascript
获取网站跟路径的javascript代码(站点及虚拟目录)
Oct 20 Javascript
jquery提示 "object expected"的解决方法
Dec 13 Javascript
jQuery数组处理代码详解(含实例演示)
Feb 03 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
Aug 14 Javascript
AngularJS手动表单验证
Feb 01 Javascript
浅谈JS之tagNaem和nodeName
Sep 13 Javascript
基于JavaScript实现滑动门效果
Mar 16 Javascript
js实现图片粘贴上传到服务器并展示的实例
Nov 08 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
Aug 31 Javascript
JavaScript类的继承多种实现方法
May 30 Javascript
Vue实现导航栏菜单
Aug 19 Javascript
JavaScript直接调用函数与call调用的区别实例分析
May 22 #Javascript
js事件机制----捕获与冒泡机制实例分析
May 22 #Javascript
JavaScript使用prototype属性实现继承操作示例
May 22 #Javascript
详解如何修改 node_modules 里的文件
May 22 #Javascript
Node.js API详解之 readline模块用法详解
May 22 #Javascript
vue+canvas实现移动端手写签名
May 21 #Javascript
基于canvas实现手写签名(vue)
May 21 #Javascript
You might like
发挥语言的威力--融合PHP与ASP
2006/10/09 PHP
杏林同学录(八)
2006/10/09 PHP
php三元运算符知识汇总
2015/07/02 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
jquery trim() 功能源代码
2011/02/14 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
Javascript this 的一些学习总结
2012/08/02 Javascript
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
js的对象与函数详解
2019/01/21 Javascript
python实现逐个读取txt字符并修改
2018/12/24 Python
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
html5清空画布方法(三种)
2017/10/16 HTML / CSS
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
Ajax和javascript的区别
2013/07/20 面试题
大专应届生个人简历的自我评价
2013/10/15 职场文书
法学专业毕业生自荐信范文
2013/12/18 职场文书
销售团队获奖感言
2014/08/14 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
介绍信的写法
2015/01/31 职场文书
2015年乡镇流动人口工作总结
2015/05/12 职场文书
致运动员赞词
2015/07/22 职场文书