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