全局作用域:
js文件中直接定义var a = 3; b = 4, 其中a、b都可以在全局作用域内访问,但是a为全局变量,b为全局作用域对象的属性,如window.b,
属性可以删除,变量不可以删除。 如 delete a 则会返回false,delete b则会返回true
函数作用域
function test() {
var a = 3;
}
块状作用域
if (true) {
var a = 4;
}
注:使用var申明的变量不存在块状作用域,var申明的变量会存在变量定义提升问题,如
function test() {
var a = 1;
if (a === 1) {
var b = 2;
}
}
等价于
function test() {
var a = 1;
var b;
if (a === 1) {
b = 2;
}
}
会将b提升到函数作用域,若
function test() {
var a = 1;
if (a === 1) {
b = 2;
}
}
此时的b并未通过var声明,则会被处理为全局对象的属性,如window.b
动态作用域
常见的this