浅谈JavaScript闭包、this指针、作用域(一)
认识闭包: 闭包,是指 有权限访问到其他函数作用域的变量的函数 给一个例子: function outer () { var name = ' HelloTF ' ; return function () { console.log (name); } } var getName = outer(); getName(); // HelloTF 函数outer执行后返回一个内部的匿名函数,并把返回的结果赋值给全局变量result,在全局环境中在此执行result,得到了outer函数内部的变量name。 仅从闭包的定义来看并没有什么感觉,不妨从中摘出几个关键词,结合JavaScript的原理: 作用域,作用链,活动对象,变量对象 作用域 在ES6之前,JavaScript没有块级作用域,经常会遇到变量提升了或者使用闭包的时候出错的问题。ES6为了解决这些问题,添加了块级作用域,此处稍后再谈。ES5中它的作用域只有两个—— 全局作用域和函数作用域。 全局作用域,是在全局都可以访问的,对前端开发者而言,一般指window; 函数作用域,即仅在函数{}内的代码区域,在函数内部声明的变量,在函数外是不可访问的。 这样就可以保证函数和变量的有序访问。在上述例子中,函数内部的name变量在函数体外无法直接访问,若我们必须要访问name,就得使用闭包,即返回一个匿名函数,输出name。