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 相关文章推荐
javascript 控制 html元素 显示/隐藏实现代码
Sep 01 Javascript
JS 对象介绍
Jan 20 Javascript
jQuery获取和设置表单元素的方法
Feb 14 Javascript
js动态添加表格数据使用insertRow和insertCell实现
May 22 Javascript
JavaScript实现的字符串replaceAll函数代码分享
Apr 02 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
Nov 02 Javascript
详解几十行代码实现一个vue的状态管理
Jan 28 Javascript
小程序云开发教程如何使用云函数实现点赞功能
May 18 Javascript
Node.js实现简单的爬取的示例代码
Jun 25 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
Jul 15 Javascript
关于vue里页面的缓存详解
Nov 04 Javascript
JS数组方法some、every和find的使用详情
Oct 05 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
第十三节 对象串行化 [13]
2006/10/09 PHP
用PHP的ob_start();控制您的浏览器cache!
2007/02/14 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
php创建无限级树型菜单
2015/11/05 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
php 修改密码实现代码
2017/05/24 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
浅谈vue限制文本框输入数字的正确姿势
2019/09/02 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
python 字典的打印实现
2019/09/26 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
Python Gluon参数和模块命名操作教程
2019/12/18 Python
python数据类型强制转换实例详解
2020/06/22 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
Python pip 常用命令汇总
2020/10/19 Python
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
公司财务总监岗位职责
2013/12/14 职场文书
中专生自我鉴定
2013/12/17 职场文书
就业协议书怎么填
2014/04/11 职场文书
雨花台导游词
2015/02/06 职场文书
赤壁观后感(2)
2015/06/15 职场文书
python实现简单反弹球游戏
2021/04/12 Python