作用域、作用域链与闭包

本文深入探讨JavaScript中的作用域概念,包括全局作用域、函数作用域和ES6新增的块级作用域。作用域决定了变量和函数的生命周期及访问范围。当遇到变量查找时,JS引擎会沿着作用域链向上搜索,直至找到变量或到达全局作用域。同时,文章讲解了闭包的定义,即能够访问外部函数作用域变量的内部函数。通过示例展示了闭包如何工作及其重要性。
摘要由CSDN通过智能技术生成

作用域

js中有全局作⽤域、函数作⽤域,es6中⼜增加了块级作⽤域。作⽤域的最⼤⽤途就是隔离变量或函数,并控制他们的⽣命周期。

作用域是在函数执行上下文创建时定义好的,不是函数执行时定义的。

举个栗⼦

function	a	()	{
  return	function	b()	{
    var	myname	=	'b';								
    console.log(myname);	//	b				
  } 
} 
function	c()	{				
  var	myname	=	'c';				
  b(); 
}
var	b	=	a(); 
c();

//	去掉函数b中的myname声明后 
function	a	()	{				
  return	function	b()	{								
    //	var	myname	=	'b';								
    console.log(myname);	//	这⾥会报错				
  } 
} 
function	c()	{				
  var	myname	=	'c';				
  b(); 
} 
var	b	=	a(); 
c();

作用域链

当⼀个块或函数嵌套在另⼀个块或函数中时,就发⽣了作⽤域的嵌套。在当前函数中如果js引擎⽆法找 到某个变量,就会往上⼀级嵌套的作⽤域中去寻找,直到找到该变量或抵达全局作⽤域,这样的链式关系就称为作⽤域链(Scope Chain)

闭包

⾼级程序设计三中:闭包是指有权访问另外⼀个函数作⽤域中的变量的函数.可以理解为(能够读取其他函数内部变量的函数)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玳宸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值