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控制图片的hover效果(smartRollover.js)
Mar 18 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
Aug 29 Javascript
document.createElement()用法及注意事项(ff下不兼容)
Mar 13 Javascript
javascript正则表达式使用replace()替换手机号的方法
Jan 19 Javascript
JavaScript Function函数类型介绍
Apr 08 Javascript
angularjs 源码解析之injector
Aug 22 Javascript
javascript数组遍历的方法实例分析
Sep 13 Javascript
jQuery 选择符详细介绍及整理
Dec 02 Javascript
详解使用Next.js构建服务端渲染应用
Jul 10 Javascript
layerUI下的绑定事件实例代码
Aug 17 Javascript
利用Vue构造器创建Form组件的通用解决方法
Dec 03 Javascript
JavaScript实现与使用发布/订阅模式详解
Jan 19 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 UTF8编码内的繁简转换类
2009/07/20 PHP
PHP 命令行参数详解及应用
2011/05/18 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
php实现面包屑导航例子分享
2015/12/19 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
2014/07/23 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
2017/03/17 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
JS实现贪吃蛇游戏
2019/11/15 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
Python for Informatics 第11章之正则表达式(二)
2016/04/21 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
python绘制热力图heatmap
2020/03/23 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
Python socket服务常用操作代码实例
2020/06/22 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
小区门卫的岗位职责
2014/09/26 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
办公室主任岗位职责
2015/01/31 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android