JS中的作用域链


Posted in Javascript onMarch 01, 2017

在js中数据的声明方式有两种:

1、用var声明,例如:var num = 10;

2、直接声明,例如:num = 10;

两种声明方式在某些情况下是有区别的:

var data = 10;
function fn01(){
  var data = 100;
  function fn02(){
    data = 1000;
    function fn03(){
      data = 10000;
    }
    fn03();
  }
  fn02();
}
fn01();
console.log(data);

此时data会是多少呢?

没错就是10

当在函数内使用var声明变量的时候这个变量就是局部变量,而当不使用var定义变量的时候这个变量就会是全局变量,当然这个全局变量也需要看定义的位置,这个全局变量会一直往上层寻找使用var定义的相同名称的变量,当寻找到时会替换其原来的变量,如果未找到则会自行定义一个全局变量;

var data = 10;
function fn01(){
  data = 100;
  function fn02(){
    data = 1000;
    function fn03(){
      data = 10000;
    }
    fn03();
  }
  fn02();
}
fn01();
console.log(data);

此时的data就是10000了,你学会了吗?

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
jQuery 选择器、DOM操作、事件、动画
Nov 25 Javascript
javascript实现倒计时(精确到秒)
Jun 26 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
May 12 Javascript
JS中常用的输出方式(五种)
Jun 12 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
Mar 25 Javascript
Javacript中自定义的map.js  的方法
Nov 26 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
Mar 08 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
May 13 Javascript
vue指令做滚动加载和监听等
May 26 Javascript
layui表格内容溢出的解决方法
Sep 06 Javascript
微信小程序如何实现五星评价功能
Oct 15 Javascript
jQuery实现弹幕特效
Nov 29 jQuery
javascript html5轻松实现拖动功能
Mar 01 #Javascript
详解数组Array.sort()排序的方法
May 09 #Javascript
JavaScript中数组Array.sort()排序方法详解
Mar 01 #Javascript
javascript中replace使用方法总结
Mar 01 #Javascript
jQuery validate 验证radio实例
Mar 01 #Javascript
提高JavaScript执行效率的23个实用技巧
Mar 01 #Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
Mar 01 #Javascript
You might like
PHP伪静态Rewrite设置之APACHE篇
2014/07/30 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
从阶乘函数对比Javascript和C#的异同
2012/05/31 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
使用FastCGI部署Python的Django应用的教程
2015/07/22 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
Pytorch的mean和std调查实例
2020/01/02 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
经贸韩语专业大学生职业规划
2014/02/14 职场文书
简单的大学生自我鉴定
2014/02/18 职场文书
《影子》教学反思
2014/02/21 职场文书
小学生读书笔记
2015/07/01 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
golang http使用踩过的坑与填坑指南
2021/04/27 Golang