JavaScript的作用域问题

js作用域这样的设计模式有什么优缺点呢?
大佬们都在利用作用域做些什么华丽的操作呢?

阅读 2.1k
4 个回答

优缺点自己权衡一下把

全局作用域 == 某一函数体访问会考虑就近原则 层级权重原则
函数作用域 == 当函数作用域变量超出作用域范围,它就会被清理
let 算是局部作用域 == 局部访问避免对于全局作用域中的污染

操作的话

jquery就是利用函数作用域的典型例子 大闭包 避免污染全局作用域的变量这些
            自己通俗的看法 还是已标准解释为准

1.优点: 作用域保护变量不受污染
外部访问不了内部变量

2.差异点: 无动态作用域
函数内部变量引用跟运行地点无关, 跟变量定义位置有关
观察下面代码

const bar = (() => {
    const f = "1";
    return () => {console.log(f)}
})();
const foo = () => {
    const f = "2";
    bar();
};
foo() // 输出定义位置的1, 而不是运行位置2

就想到这两点, 期待大佬补充

最大的优点大概就是可以实现闭包?

缺点的话,字面上的位置不一定表示执行时的作用域大概算是一个。

会污染环境,所以还是尽量少的使用全局,ES6中提供了支持块级作用域的let变量声明。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题