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 相关文章推荐
JavaScript 序列化对象实现代码
Dec 18 Javascript
jQuery实现的图片分组切换焦点图插件
Jan 06 Javascript
原生js和jquery实现图片轮播淡入淡出效果
Apr 23 Javascript
JavaSacript中charCodeAt()方法的使用详解
Jun 05 Javascript
简单谈谈javascript Date类型
Sep 06 Javascript
javascript实现动态标签云
Oct 16 Javascript
js实现千分符和保留几位小数的简单实例
Aug 01 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
Mar 13 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
Jun 17 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
Oct 23 Javascript
nginx部署多个vue项目的方法示例
Sep 06 Javascript
Node.js path模块,获取文件后缀名操作
Nov 07 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.ini 中文版
2006/10/28 PHP
PHP 遍历文件实现代码
2011/05/04 PHP
Zend Studio 实用快捷键一览表(精心整理)
2013/08/10 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
php压缩文件夹最新版
2018/07/18 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
实用的Jquery选项卡TAB示例代码
2013/08/28 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
node.js从数据库获取数据
2016/05/08 Javascript
AngularJS ng-blur 指令详解及简单实例
2016/07/30 Javascript
最丑的时钟效果!js canvas时钟制作方法
2016/08/15 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
python将文本中的空格替换为换行的方法
2018/03/19 Python
python-opencv颜色提取分割方法
2018/12/08 Python
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
职称自我鉴定
2013/10/15 职场文书
老师给学生的表扬信
2014/01/17 职场文书
写求职信有什么意义
2014/02/17 职场文书
酒会开场白大全
2015/06/01 职场文书
高中军训感想
2015/08/07 职场文书
Matplotlib绘制条形图的方法你知道吗
2022/03/21 Python