1、自执行函数
(function(){
})()
自执行函数可以模仿块级作用域
js中没有块级作用域
if(true){
var a = 3
}
console.log(a);
2、闭包
函数里面套函数
缺点:容易内存泄漏
3、作用域链
window.alert(2233);
var a1 = 3;
var a = 4;
window.a
function fn(){
var a = 1
console.log(a)
function fn1(){
var b =2
function fn3(){
var c =3
}
}
function fn2(){
var d =4
}
}
对于fn fn自己的执行环境》window
fn1的作用域链 fn1>fn>window
fn3 fn3>fn1>fn>window
fn2 fn2>fn>window
作用域链是在函数定义的时候决定的,不是调用的时候