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方法的具体实现
Jul 31 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
Oct 23 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
Apr 25 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
Apr 30 Javascript
node.js中的fs.symlink方法使用说明
Dec 15 Javascript
深入探寻javascript定时器
Jan 02 Javascript
jQuery实现自动滚动到页面顶端的方法
May 22 Javascript
JS实现网页标题随机显示名人名言的方法
Nov 03 Javascript
Node.js 8 中的 util.promisify的详解
Jun 12 Javascript
layui 解决富文本框form表单提交为空的问题
Oct 26 Javascript
js实现带箭头的进度流程
Mar 26 Javascript
vue-cli3单页构建大型项目方案
Apr 07 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中读取和写入WORD文档的代码
2008/04/09 PHP
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
基于python yield机制的异步操作同步化编程模型
2016/03/18 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
详解python对象之间的交互
2020/09/29 Python
马来西亚时装购物网站:ZALORA马来西亚
2017/03/14 全球购物
香港交友网站:be2香港
2018/07/22 全球购物
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
学雷锋演讲稿汇总
2014/05/10 职场文书
陈胜吴广起义口号
2014/06/20 职场文书
贷款承诺书
2015/01/20 职场文书
公务员政审个人总结
2015/02/12 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL