JavaScript 闭包和作用域

作用域

每个函数都有自己的执行环境,当代码在一个环境中执行时,会创建变量对象的一个作用域,作用域的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。

全局环境:是最外围的一个执行对象,在web浏览器中全局环境被认为是window对象;

var color = "blue"; 
function changeColor(){
    
     
 if (color === "blue"){
    
     
 color = "red"; 
 } else {
    
     
 color = "blue"; 
 } 
} 
changeColor(); 
alert("Color is now " + color); //Color is now red

在上面的代码中,color是全局变量,在函数内部也可以访问变量color。

var color = "blue"; 
function changeColor(){
    
     
 var anotherColor = "red"; 
 function swapColors(){
    
     
 var tempColor = anotherColor; 
 anotherColor = color; 
 color = tempColor; 
 // 这里可以访问 color、anotherColor 和 tempColor 
 } 
 // 这里可以访问 color 和 anotherColor,但不能访问 tempColor 
 swapColors(); 
} 
// 这里只能访问 color 
changeColor();

在这里插入图片描述

闭包

匿名函数指创建一个函数并将它的值赋值给一个变量;如

var afunValue = function(arg1,arg2){
    
    
//函数体
}

闭包是指某函数有权访问另一个函数作用域中的变量;创建闭包的常见方式就是在一个函数内部创建另一个函数

闭包的特点:
1、可以更新外部变量的值
2、可以访问当前函数以外的变量
3、即使外部函数已经返回值,但是闭包仍然能访问外部函数定义的变量

猜你喜欢

转载自blog.csdn.net/sanjun_done/article/details/114748939
今日推荐