You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
闭包是由词法作用域与函数是一等公民共同的产物.
词法作用域是指词法分析阶段确定的作用域,说白了是在写代码的时候,确定是函数作用域还是全局作用域.
函数是一等公民,是因为它可以作为参数传递和返回.
而两者结合是为了,让函数有权访问其他函数体内的作用域. function A(){ let v = 'a';//词法分析确定为函数作用域 return function(b){//作为参数传递 console.log(v+b) } } let a = A(); console.log(v)//Uncaught ReferenceError: v is not defined //函数外是获取不到函数内的值,如果想访问或使用函数内的v,把函数作为参数传递出去 a('b') //打印'ab'
Activity
Wildprogrammingape commentedon Mar 6, 2021
是让嵌套的函数拥有上一层self-invoking function的scope,这样其variable就有了private scope。
Cqy1995 commentedon Mar 22, 2021
闭包是由词法作用域与函数是一等公民共同的产物.
词法作用域是指词法分析阶段确定的作用域,说白了是在写代码的时候,确定是函数作用域还是全局作用域.
函数是一等公民,是因为它可以作为参数传递和返回.
而两者结合是为了,让函数有权访问其他函数体内的作用域.
function A(){ let v = 'a';//词法分析确定为函数作用域 return function(b){//作为参数传递 console.log(v+b) } } let a = A(); console.log(v)//Uncaught ReferenceError: v is not defined //函数外是获取不到函数内的值,如果想访问或使用函数内的v,把函数作为参数传递出去 a('b') //打印'ab'
Jack-rainbow commentedon Mar 31, 2021
闭包的本质只是让作用域内的函数能访问其他变量