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 相关文章推荐
js跨域问题之跨域iframe自适应大小实现代码
Jul 17 Javascript
JQuery表单验证插件EasyValidator用法分析
Nov 15 Javascript
深入分析JSON编码格式提交表单数据
Jun 25 Javascript
JavaScript接口的实现三种方式(推荐)
Jun 14 Javascript
利用Vue.js实现checkbox的全选反选效果
Jan 18 Javascript
使用JavaScript触发过渡效果的方法
Jan 19 Javascript
利用Jasmine对Angular进行单元测试的方法详解
Jun 12 Javascript
angular.extend方法的具体使用
Sep 14 Javascript
用Webpack构建Vue项目的实践
Nov 07 Javascript
react build 后打包发布总结
Aug 24 Javascript
vue cli 3.x 项目部署到 github pages的方法
Apr 17 Javascript
解决vue自定义组件@click点击失效问题
Apr 30 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实现链式操作的核心思想
2015/06/23 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
jQuery Ajax文件上传(php)
2009/06/16 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
纯js实现页面返回顶部的动画(超简单)
2017/08/10 Javascript
AngularJS实现动态切换样式的方法分析
2018/06/26 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
js中的reduce()函数讲解
2019/01/18 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
python搭建虚拟环境的步骤详解
2016/09/27 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
python正则表达式实例代码
2020/03/03 Python
Python编写单元测试代码实例
2020/09/10 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
html5 Canvas画图教程(1)—画图的基本常识
2013/01/09 HTML / CSS
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
开工仪式主持词
2014/03/20 职场文书
安全生产计划书
2014/05/04 职场文书
科技之星事迹材料
2014/06/02 职场文书
夏季药店促销方案
2014/08/22 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
Python中for后接else的语法使用
2021/05/18 Python
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL
vue3不同环境下实现配置代理
2022/05/25 Vue.js