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 相关文章推荐
IE和Firefox的Javascript兼容性总结[推荐收藏]
Oct 19 Javascript
JavaScript中具名函数的多种调用方式总结
Nov 08 Javascript
angularjs中的e2e测试实例
Dec 06 Javascript
jQuery中ajax的post()方法用法实例
Dec 26 Javascript
基于jQuery实现选项卡效果
Jan 04 Javascript
jq给页面添加覆盖层遮罩的实例
Feb 16 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
May 03 jQuery
layui radio性别单选框赋值方法
Aug 15 Javascript
Windows下Node爬虫神器Puppeteer安装记
Jan 09 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
Jan 18 jQuery
Vue+Element实现动态生成新表单并添加验证功能
May 23 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
Jan 04 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
PHP4实际应用经验篇(7)
2006/10/09 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
js确定对象类型方法
2012/03/30 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
python多线程编程中的join函数使用心得
2014/09/02 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
消防工作实施方案
2014/06/09 职场文书
政府法律服务方案
2014/06/14 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
世界文化遗产导游词
2015/02/13 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
预备党员入党感言
2015/08/01 职场文书
怎样写好工作计划
2019/04/10 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书