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 相关文章推荐
js传值 判断
Oct 26 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
Feb 05 Javascript
Javascript 读取操作Sql中的Xml字段
Oct 09 Javascript
javascript实现避免页面按钮重复提交
Jan 08 Javascript
jQuery实现的多屏图像图层切换效果实例
May 07 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
Dec 10 Javascript
实例详解AngularJS实现无限级联动菜单
Jan 15 Javascript
深入理解$.each和$(selector).each
May 15 Javascript
利用JavaScript实现栈的数据结构示例代码
Aug 02 Javascript
Vue 项目部署到服务器的问题解决方法
Dec 05 Javascript
javascript实现留言板功能
Feb 08 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
Mar 10 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
如何在PHP中使用Oracle数据库(4)
2006/10/09 PHP
php下使用strpos需要注意 === 运算符
2010/07/17 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
Python龙贝格法求积分实例
2020/02/29 Python
python numpy库np.percentile用法说明
2020/06/08 Python
python中使用np.delete()的实例方法
2021/02/01 Python
python sleep和wait对比总结
2021/02/03 Python
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
自荐信格式的六要素
2013/09/21 职场文书
服务员岗位责任制
2014/02/11 职场文书
省文明单位申报材料
2014/05/08 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
党性教育心得体会
2014/09/03 职场文书
婚姻出轨保证书
2015/05/08 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
《秦兵马俑》教学反思
2016/02/24 职场文书
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis