作用域
什么是作用域?
作用域就是你的代码在运行时,各个变量、函数和对象的可访问性。换句话说,作用域决定了你的代码里的变量能否被外界引用。
为什么需要作用域?
最小访问原则。作用域为代码提供了一个安全层级,不同作用域互不干扰。有利于追踪bug而且避免了同名变量冲突。
作用域有哪些?
全局作用域 (window)
局部作用域(函数)
块级作用域(ES6 let/const关键字)
js中的作用域指的是词法作用域。一段js代码执行需要经过2个阶段:
1.编译阶段--编译器会编译你的代码(词法化),这个时候,你的作用域就已经确定了的
2.执行阶段--js引擎开始执行你的代码
js的作用域跟执行上下文经常被混淆。如何区分呢?
作用域是在编译阶段就已经确定了的, 而执行上下文是在函数被执行的时候创建的(执行上下文以后会讲到,注意:全局作用域可以看成一个特殊的‘执行上下文’,先把window理解为一个函数吧)