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 相关文章推荐
JavaScript 编写匿名函数的几种方法
Feb 21 Javascript
微信支付如何实现内置浏览器的H5页面支付
Sep 25 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
Jun 23 Javascript
JavaScript实现经典排序算法之冒泡排序
Dec 28 Javascript
最全的JavaScript开发工具列表 总有一款适合你
Jun 29 Javascript
详解Vue webapp项目通过HBulider打包原生APP
Jun 29 Javascript
js指定日期增加指定月份的实现方法
Dec 19 Javascript
vue实现直播间点赞飘心效果的示例代码
Sep 20 Javascript
Javascript Dom元素获取和添加详解
Sep 24 Javascript
Bootstrap实现模态框效果
Sep 30 Javascript
微信小程序顶部导航栏可滑动并选中放大
Dec 05 Javascript
vue实现按钮切换图片
Jan 20 Vue.js
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禁止页面缓存的代码
2011/10/23 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
JQuery实现简单验证码提示解决方案
2012/12/20 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
js判断是否是手机页面
2017/03/17 Javascript
JavaScript实现实时更新系统时间的实例代码
2017/04/04 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
vue实现表格增删改查效果的实例代码
2017/07/18 Javascript
使用socket.io实现简单聊天室案例
2018/01/02 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
详解Python Socket网络编程
2016/01/05 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
HTML5视频支持检测(检查浏览器是否支持视频播放)
2013/06/08 HTML / CSS
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
linux面试题参考答案(9)
2015/01/07 面试题
省优秀教师事迹材料
2014/01/30 职场文书
商务英语广告词大全
2014/03/18 职场文书
工厂采购员岗位职责
2014/04/08 职场文书
保证书格式
2015/01/16 职场文书
应聘教师求职信范文
2015/03/20 职场文书
升职自荐信范文
2015/03/27 职场文书
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python