当前位置:首页 > 编程教程 > javascript技术文章 > JS中的作用域链

如何理解JS中的作用域链及作用域链

  • 发布时间:
  • 作者:码农之家
  • 点击:184

这篇文章主要知识点是关于js、作用域链、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

学习JavaScript数据结构与算法
  • 类型:JavaScript大小:13.6 MB格式:PDF作者:洛伊安妮
立即下载

JS中的作用域链

在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了,你学会了吗?

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

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

JavaScript 相关电子书
学习笔记
网友NO.346171

js作用域和作用域链及预解析

变量----局部变量和全局变量, 作用域: 在某个空间范围内,可以对数据进行读写操作 局部作用域和全局作用域 js中没有块级作用域—一对括号中定义的变量,这个变量可以在大括号外面使用 函数中定义的变量是局部变量 作用域链:变量的使用,从里向外,层层的搜索,搜索到了就可以直接使用了 层层搜索,搜索到0级作用域的时候,如果还是没有找到这个变量,结果就是报错 在 JavaScript 中, 对象和函数同样也是变量。 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 JavaScript 函数作用域: 作用域在函数内修改。 JavaScript 局部作用域 变量在函数内声明,变量为局部作用域。 局部变量:只能在函数内部访问。 因为局部变量只作用于函数内,所以不同的函数可以使用相同名称的变量。 局部变量在函数开始执行时创建,函数执行完后局部变量会自动销毁。……

网友NO.606405

JS作用域链详解

本文实例为大家分享了JS作用域链的相关内容,供大家参考,具体内容如下 1、所有全局变量和函数都是作为window对象的属性和方法创建的。 2、在某个方法函数的作用域中,所有代码执行完之后,该作用域被销毁,保存在其中的所有变量和函数定义也会随着被”销毁“,这就是局部作用域。但闭包不会销毁局部变量。 这里的销毁:是指下次再执行此函数的时候,所有的变量又回到最初的状态 var color = "blue";function changeColor(){ var anothercolor = "red"; if(color==="blue"){ color = anothercolor; } //这里可以访问anothercolor,color } //这里只可以访问colorchangeColor();console.log(color);//redconsole.log(anothercolor);// undefined。anothercolor是函数changeColor的局部变量,在整个函数运行之后已经被“销毁” 3、变量的声明注意点 function ddq(){ alert(i)var i=11 alert(i) }ddq()// 第一个返回underfind//第二个返回……

网友NO.617020

JS 作用域与作用域链详解

(1)作用域 一个变量的作用域(scope)是程序源代码中定义的这个变量的区域。 1. 在JS中使用的是词法作用域(lexical scope) 不在任何函数内声明的变量(函数内省略var的也算全局)称作全局变量(global scope) 在函数内声明的变量具有函数作用域(function scope),属于局部变量 局部变量优先级高于全局变量 复制代码 代码如下: var name="one"; function test(){ var name="two"; console.log(name); //two } test(); 函数内省略var的,会影响全局变量,因为它实际上已经被重写成了全局变量 复制代码 代码如下: var name="one"; function test(){ name="two"; } test(); console.log(name); //two 函数作用域,就是说函数是一个作用域的基本单位,js不像c/c++那样具有块级作用域 比如 if for 等 复制代码 代码如下: function test(){ for(var i=0;i10;i++){ if(i==5){ var name = "one"; } } console.log(name); //one } test(); //因为是函数级……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com

idea注册码