仔细看了下维基百科上面闭包的定义:闭包是一个record,它存储了一个函数和它的环境,这个环境存储了该函数的自由变量,js的函数完全符合这个定义,所以说js的函数其实就是闭包。倒是普通函数有点特别,我自己理解,这样的函数才是普通函数: function(a, b) { const c = 10 return a + b + c; } 这个函数只访问了自己的函数作用域内部的变量和参数,这样的函数才是所谓的普通函数,不知道这样理解对不对?
老师 我这有个问题:对于这段代码; var b; void function(){ var env = {b:1}; b = 2; console.log("In function start b:", b); with(env) { var b = 3; console.log("In with b:", b); } console.log("In function end b:", b); }(); console.log("Global b:", b);
打印结果是这样的: In function start b: 2 In with b: 3 In function end b: 2 Global b: 10