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 相关文章推荐
用 JSON 处理缓存
Apr 27 Javascript
javascript add event remove event
Apr 07 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
Apr 24 Javascript
使用JavaScript 实现各种跨域的方法
May 08 Javascript
JQuery选择器、过滤器大整理
May 26 Javascript
javascript图片预加载完整实例
Dec 10 Javascript
javascript每日必学之条件分支
Feb 17 Javascript
浅谈Sticky组件的改进实现
Mar 22 Javascript
详解JavaScript中基于原型prototype的继承特性
May 05 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
Nov 01 Javascript
微信小程序实现签字功能
Dec 23 Javascript
基于javascript原生判断DOM是否加载完毕
Oct 14 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
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
PHP源码之explode使用说明
2011/08/05 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
thinkphp分页实现效果
2016/10/13 PHP
php 静态属性和静态方法区别详解
2017/04/09 PHP
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
2014/01/24 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
js轮播图的插件化封装详解
2017/07/17 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
利用 JavaScript 实现并发控制的示例代码
2020/12/31 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
Python sorted对list和dict排序
2020/06/09 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
python中的时区问题
2021/01/14 Python
现代化办公人员工作的自我评价
2013/10/16 职场文书
聘用意向书范本
2014/04/01 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
奖励通知
2015/04/22 职场文书
借条如何写
2015/05/26 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android
Python实现生活常识解答机器人
2021/06/28 Python
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL