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函数调用的方式
May 06 Javascript
详解javascript传统方法实现异步校验
Jan 22 Javascript
javascript实现label标签跳出循环操作
Mar 06 Javascript
BootStrap便签页的简单应用
Jan 06 Javascript
JS查找英文文章中出现频率最高的单词
Mar 20 Javascript
vue.js国际化 vue-i18n插件的使用详解
Jul 07 Javascript
bootstrap是什么_动力节点Java学院整理
Jul 14 Javascript
VueJS事件处理器v-on的使用方法
Sep 27 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
Nov 06 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
Jun 04 Javascript
JavaScript多种滤镜算法实现代码实例
Dec 10 Javascript
k8s node节点重新加入master集群的实现
Feb 22 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
javascript prototype原型操作笔记
2009/12/07 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
JavaScript将字符串转换为整数的方法
2015/04/14 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
JavaScript对象学习小结
2015/09/02 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
2017/02/23 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
详解Django中Request对象的相关用法
2015/07/17 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
python中字符串的操作方法大全
2018/06/03 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
python sorted方法和列表使用解析
2019/11/18 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
canvas之自定义头像功能实现代码示例
2017/09/29 HTML / CSS
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
车间主管岗位职责
2013/11/14 职场文书
给老婆的保证书范文
2014/04/28 职场文书
小班上学期评语
2014/05/05 职场文书
2014年药店工作总结
2014/11/20 职场文书