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 监听textarea中按键事件
Oct 08 Javascript
JS 事件绑定函数代码
Apr 28 Javascript
在JavaScript中获取请求的URL参数
Dec 22 Javascript
jQuery操作DOM之获取表单控件的值
Jan 23 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
Jun 26 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
May 22 jQuery
Angularjs中date过滤器失效的问题及解决方法
Jul 06 Javascript
对vue中v-if的常见使用方法详解
Sep 28 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
Apr 26 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
Jul 25 Javascript
vue微信分享插件使用方法详解
Feb 18 Javascript
JS实现数组去重的11种方法总结
Apr 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
Terran剧情介绍
2020/03/14 星际争霸
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
2019/10/12 PHP
使用正则替换变量
2007/05/05 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
[01:02:34]TFT vs VGJ.T Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
python实现小球弹跳效果
2019/05/10 Python
centos7之Python3.74安装教程
2019/08/15 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
python3 re返回形式总结
2020/11/20 Python
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
商务英语专业自荐信
2013/10/14 职场文书
优秀管理者获奖感言
2014/02/17 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
赞助商致辞
2015/07/30 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript