闭包:
形式:函数嵌套函数
概念:子函数可以使用父函数作用域中局部变量,但是父级不能访问子级
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures
函数对象可以通过作用域链相互关联起来,函数体内的数据(变量和函数声明)都可以保存在函数作用域内,这种特性在计算机科学文献中
被称为“闭包”。既函数体内的数据被隐藏于作用于链内,看起来像是函数将数据“包裹”了起来。从技术角度来说,js的函数都是闭包:函数
都是对象,都关联到作用域链,函数内数据都被保存在函数作用域内。
全局污染
不要使用全局变量,写在fn自执行里,也叫声明一个命名空间
var tab = .....;
var tab = .....; 覆盖之前声明
作用域
1. 声明在任何函数之外的数据,作用域都是全局的
2. 声明在函数的数据,作用域只在该函数中
作用域链:
1. 数据的查找规则
2. 现在当前查找,如果找不到就向上找父作用域,还是找不到就一直向上,直到全局作用域