nodejs中闭包是怎么回事?

nodejs中的闭包使用特别常见,经常从事java或python开发的人员,可能要特别注意了,因为nodejs采用异步io,所以变量的状态很重要,一不小心就取错值了,为了保留变量的状态,因此出现了闭包(其他语言也有这个概念,如java),来例子,没有闭包的例子:

function async(callback){

    setTimeout(() => {

        callback();

    }, 200);

}

let myVar='first Value';

async(()=>{

    console.log(`myVar is ${myVar}`);//myVar is last Value

})

myVar = "last Value";

采用闭包的例子:

function async(callback){

    setTimeout(() => {

        callback();

    }, 200);

}

let myVar='first Value';

((myVar)=>{

    async(()=>{

        console.log(`myVar is ${myVar}`);//myVar is first Value

    })

})(myVar);

myVar = "last Value";

本质上,闭包就是,将myVar全局作用域,通过匿名函数变成局部变量,这样myVar的值就保留了下来。

你可能感兴趣的:(nodejs中闭包是怎么回事?)