`
zhanyu1984
  • 浏览: 73027 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

js作用域链的问题

阅读更多
var name = "The Window";  
var object = {  
name : "My Object",  
getNameFunc : function(){  
return function(){  
return this.name;  
};  
}  
};  
alert(object.getNameFunc()()); //The Window

当在函数中访问一个变量的时候,搜索顺序是先搜索自身的活动对象(即return的function),如果存在则返回,如果不存在将继续作用域链 上一个函数(即getNameFunc), 在return 的function作用域中是存在this.name的,即window.name,所以没有必要再向上一个作用域去找。function才是作用域, object={}不是作用域。第一个作用域this就是有的啊,就是window对象,所以不用在找了。



this去掉之后在return function的作用域和getNameFunc的作用域中都找不到name了,只能到全局作用域中找到name = The Window。

var name = "The Window";
var object = {  
name : "My Object",  
getNameFunc : function(){  
return function(){  
return name;  
};  
}  
};  
alert(object.getNameFunc()()); //The Window



当你你试着写成这样时,因为现在return function的作用域,找不到再到和getNameFunc的作用域中找就找到了name=test

var name = "The Window";
  var object = {
  name: "My Object",
  getNameFunc: function () {
  var name = "test";
  return function () {
  return name;
  };
  }
  };
  alert(object.getNameFunc()()); //test

分享到:
评论

相关推荐

    深入理解JavaScript作用域和作用域链

    深入理解JavaScript作用域和作用域链对于编写高效、无错的代码至关重要。正确管理作用域可以避免全局变量冲突,提高代码的复用性和模块化,同时也有助于提升性能,因为局部变量的访问速度通常比全局变量快。在实际...

    js作用域链图解ppt

    JavaScript中的作用域链是理解变量查找和闭包的关键概念。作用域链主要涉及到函数执行上下文和全局执行上下文中的作用域。以下是对这个主题的详细解释: 首先,每个函数在创建时,都会有一个内部属性[[scope]],它...

    JavaScript中作用域链的概念及用途讲解

    了解并熟练掌握作用域链,对于编写高效、无错的JavaScript代码至关重要,同时也能帮助开发者在面试中脱颖而出,解决实际开发中的调试问题。通过深入理解作用域链,我们可以更好地管理变量的生命周期,防止不必要的...

    javascript作用域链(Scope Chain)初探.docx

    ### JavaScript作用域链(Scope Chain)初探 #### 一、引言 JavaScript的作用域链是一个重要的概念,尤其是在深入理解JavaScript执行机制时不可或缺的一部分。本文将通过对几个具体例子的分析来探讨JavaScript作用域...

    javascript变量作用域

    JavaScript 变量作用域是基于其特有的作用域链的。在 JavaScript 中,变量作用域是指变量可以被访问和修改的范围。 JavaScript 没有块级作用域,而是基于函数作用域和全局作用域的。 首先,看看 JavaScript 的作用...

    深入了解JavaScript,优化作用域链(2).pdf

    在JavaScript编程中,作用域和作用域链是影响程序性能的关键因素之一。优化作用域链是提高JavaScript代码执行效率的重要手段。下面我们从多个方面来详细探讨作用域链的概念、作用域链的层级关系、变量访问的性能影响...

    理解JavaScript作用域和作用域链

    作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望能帮助大家更好的学习JavaScript。任何程序...

    javascript 闭包、匿名函数、作用域链

    JavaScript中的闭包、匿名函数和作用域链是编程中至关重要的概念,它们是理解JavaScript运行机制的关键。在本文中,我们将深入探讨这三个概念,并通过实际示例来展示它们的运用。 首先,我们来讨论“闭包”。闭包是...

    图解javascript作用域链

    JavaScript的作用域链是理解JavaScript执行环境的关键概念,它决定了变量和函数的可访问性。在JavaScript中,每个函数都有自己的作用域,而这些作用域按照特定的顺序组织起来,形成了作用域链。这个链帮助解析器在...

    JavaScript 作用域 和作用域链

    作用域链是JavaScript在查找变量时遵循的一个规则集合。当尝试访问一个变量时,JavaScript引擎会首先在当前作用域中查找,如果找不到,就会沿着作用域链向上层作用域查找,直到找到变量或者到达全局作用域。如果在...

    JavaScript — 原型链与作用域链1

    JavaScript是一种广泛用于网页和网络应用的脚本语言,它的核心特性包括原型链和作用域链。这两个概念是理解JavaScript中对象继承和变量访问的关键。 **作用域链** 1. **作用域生成**:每次JavaScript代码执行时,...

    javascript执行环境,作用域理解

    整个作用域链是由不同执行位置上的 Variable Object 按照规则所构建一个链表。作用域链的最前端,始终是当前正在执行的代码所在环境的 Variable Object。如果这个环境是函数(比如 Fn2),则将其活动对象...

    05-JavaScript作用域.pdf

    JavaScript作用域是指在JavaScript代码中,变量、常量、对象和函数能够访问的...在开发中,应根据需求合理使用全局作用域、局部作用域、块作用域和函数作用域,并注意作用域链的查找机制,避免不必要的错误和性能问题。

    javascript作用域链(Scope Chain)用法实例解析

    总的来说,JavaScript 作用域链是理解和解决变量访问、作用域冲突以及内存管理等问题的关键。正确理解和运用作用域链可以避免许多常见的编程陷阱,并帮助你编写更高效、更易于维护的代码。在实际开发中,掌握作用域...

    深入了解JavaScript,从作用域链开始(1).pdf

    总的来说,深入理解JavaScript的作用域和作用域链对于编写高效、无bug的代码至关重要。通过掌握这些基本概念,开发者可以更好地管理变量和函数的生命周期,避免全局变量的滥用,并有效地组织代码逻辑。

    JavaScript作用域示例详解_.docx

    本篇将详细解释JavaScript作用域的几个核心特性,包括无块级作用域、函数作用域、作用域链以及作用域链的创建时间。 1. 无块级作用域 不同于Java或C#,JavaScript并没有块级作用域,这意味着在JavaScript中,大括号...

    详解JavaScript作用域和作用域链

    虽然对于许多新手开发者来说,作用域的概念并不是很容易理解,本文我会尽我所能用最简单的方式来解释作用域和作用域链,希望大家有所收获! 作用域(Scope) 1. 什么是作用域 作用域是在运行时代码中的某些特定部分中...

Global site tag (gtag.js) - Google Analytics