Git Product home page Git Product logo

blog's Introduction

blog's People

Contributors

taosin avatar

Stargazers

 avatar

Watchers

 avatar

blog's Issues

深入解析JavaScript之作用域和闭包

什么是作用域?

作用域是一套用于确定在何处以及如何查找_变量_(标识符)的规则。也可以理解为限定这个变量的可用性的_代码范围_。

理解作用域

要理解作用域,首先可以了解下 引擎、编译器的作用。

  • 引擎:负责整个 JavaScript 程序的编译及执行过程。
  • 编译器:负责语法分析及代码生成等。
  • 作用域:负责收集并维护由所有声明的变量(标识符)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些变量的访问权限。

来自《你不知道的JavaScript(上)》

作用域链

作用域链:当访问一个变量(标识符)时,解释器首先会在当前作用域进行查找,如果未找到,就会去上级作用域中查找,直到找到该变量或者到达最顶层的作用域(也就是全局作用域),这时就形成了作用域链。

作用域链的顶端是全局作用域,也就是window,在window中顶域的变量就会绑定到全局作用域中。

作用域嵌套

代码如下:

// 全局作用域,有一个标识符:foo。
function foo(a){
	// foo 所创建的作用域,其中有三个标识符:a、bar和b。
	var b = a * 2;
	function bar (c) {
		// bar 所创建的作用域,只有一个标识符: c。
		console.log(a, b, c);
	}
	bar(b * 3);
}
foo(2);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.