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数组使用调用方法汇总
Dec 08 Javascript
wap图片滚动特效无css3元素纯js脚本编写
Aug 22 Javascript
使用原生JS实现弹出层特效
Dec 22 Javascript
TypeOf这些知识点你了解吗
Feb 21 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
May 16 Javascript
Node.js中看JavaScript的引用
Apr 22 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
Aug 07 Javascript
jQuery实现的简单无刷新评论功能示例
Nov 08 jQuery
动态加载、移除js/css文件的示例代码
Mar 20 Javascript
Vue实现点击显示不同图片的效果
Aug 10 Javascript
countUp.js实现数字滚动效果
Oct 18 Javascript
vue中watch和computed的区别与使用方法
Aug 23 Javascript
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_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
js脚本实现数据去重
2014/11/27 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
JavaScript实现自动变换表格边框颜色
2015/05/08 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
Python实现时间序列可视化的方法
2019/08/06 Python
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
通过HTML5 Canvas API绘制弧线和圆形的教程
2016/03/14 HTML / CSS
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
2014年五一劳动节社区活动总结
2014/04/14 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL