自运行函数
自运行函数的内部能否访问到外部的变量?
可以的,自运行函数根据作用域链可以访问外部的变量,而外部访问不了里面的局部变量。
自运行函数可以不用匿名函数?
可以不用,同样不会污染全局作用域,只是使用匿名函数是常见的做法。
自运行函数和把代码放到一个函数然后再运行有什么区别?
自运行函数其实是把代码放到一个函数(即放到一个命名空间里面),然后执行这个函数表达式。但是这种方式下,定义的这个函数会污染全局命名空间,所以使用自运行函数而不是定义一个函数。
自运行函数有什么缺点?
- 不是js语言本身支持的模块化
- 可读性、调试性变差
自运行函数有什么优点?
- 隔离作用域、代码模块化。
- 原始的js模块化方式兼容性好,目前第三方库umd格式的实现方式仍是自运行函数。