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 相关文章推荐
jquery一句话全选/取消全选
Mar 01 Javascript
jQuery DOM插入节点操作指南
Mar 03 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
Sep 14 Javascript
jQuery树控件zTree使用方法详解(一)
Feb 28 Javascript
JSON与JS对象的区别与对比
Mar 01 Javascript
基于angular2 的 http服务封装的实例代码
Jun 29 Javascript
Vue入门之animate过渡动画效果
Apr 08 Javascript
纯JS实现可用于页码更换的飞页特效示例
May 21 Javascript
angularjs通过过滤器返回超链接的方法
Oct 26 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
May 11 Javascript
vue3.0 自适应不同分辨率电脑的操作
Feb 06 Vue.js
详解JVM系列之内存模型
Jun 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
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
yii使用activeFileField控件实现上传文件与图片的方法
2015/12/28 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
JS将unicode码转中文方法
2017/05/08 Javascript
js编写选项卡效果
2017/05/23 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
详解 Python 与文件对象共事的实例
2017/09/11 Python
Python 列表理解及使用方法
2017/10/27 Python
Python数据结构之栈、队列的实现代码分享
2017/12/04 Python
python logging日志模块原理及操作解析
2019/10/12 Python
python实现单机五子棋
2020/08/28 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
我的画教学反思
2014/04/28 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
员工培训协议书
2014/09/15 职场文书
学生偷窃检讨书
2014/09/25 职场文书
国际贸易实训报告
2014/11/05 职场文书
2015年银行信贷员工作总结
2015/05/19 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server