函数中的作用域
隐藏内部实现
- 为什么不将所有的变量和函数都放在全局作用域中?
规避冲突
- 隐藏作用域中的变量和函数可以避免同名标识符之间的冲突。
全局命名空间
- 很多第三方库为了防止变量冲突,通常会为变量命名一个非常独特的名字。
模块管理
函数作用域
- 立即执行函数是一种既不需要函数名同时能够自动执行的函数。
匿名和具名
- 区分匿名函数表达式和函数声明:函数声明需要函数名,但是函数表达式则不需要。
- 匿名函数表达式有以下几个缺点:
- 匿名函数在栈追踪中没有名字,会使得调试困难。
- 没有函数名,如果需要递归时,只能使用已经过期的arguments.callee引用。
- 匿名函数降低了代码的可读性。
立即执行函数表达式
- 立即执行函数的英文缩写:IIFE
- 立即执行函数传递参数
- 倒置代码的运行顺序:window才是真正的参数
块作用域
- 分清定义在块级作用域内还是块级作用域之外
with关键字可以形成一个块作用域
try/catch
- catch中的参数会形成一个块级作用域
- 但是如果在catch内部进行var声明,依然是声明在全局作用域中
let关键字
- let关键字会形成一个隐式的块级作用域,这个隐式是相对于下面的显式而言的。
- let声明的变量不会在块作用域中进行提升。
垃圾收集
- 通过块级作用域,可以让引擎清楚的知道没有必要保存已经用不到的变量了。
const关键字
- const同样可以用来创建块级作用域,但是块级作用域的值是固定的,但是如果存放的是引用地址的话,地址不能变,但是地址指向的值是可以修改的。
小结
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!