JS变量查的规则
1、变量查的规范
左查询(对等号左边的变量进⾏寻址)
如果整条作⽤域链 都没有对应变量的声明;则会在全局⾃动声明⼀份
/* var a = 3;
b = a;*/
console.log(b)//全局⾃动声明⼀份,3
右查询(对等号⾮左边的变量进⾏寻址)
如果整条作⽤域链 都没有对应变量的声明;则会报错
console.log(c)
2、作⽤域
变量的查⾛作⽤域链
var x =10;js arguments
function fn(){
console.log(x);
}
function show(f){
var x =20;
fn()//调⽤fn函数的时候会倒回第⼆⾏去执⾏,该作⽤域没有定义X,往上⼀层,全局x=10
}
show(fn);//10
3、经典闭包
/
/编译阶段就已经⽣成作⽤域了
function wrap(){
var a ="a"
return function(){
console.log(a)
}
}
var inner =wrap()
inner()
4、js三座⼤⼭&两头神兽
三座⼤⼭ : 作⽤域&作⽤域链  ; 执⾏上下⽂&执⾏上下⽂栈 ; 原型&原型链
作⽤域&作⽤域链 : 决定了变量的查规则;左查询右查询
执⾏上下⽂&执⾏上下⽂栈:
a.函数调⽤时实参如何对应形参
b.给arguments赋值
c.给this赋值
d.闭包
原型&原型链: 决定了属性的查规则
两头神兽 : 闭包原型
闭包: 当函数可以记住并访问⾃⼰的作⽤域链时;就会产⽣闭包
个⼈理解:
编译阶段就已经有作⽤域了
⼀个作⽤域挂靠⼀个执⾏上下⽂
闭包市场说法 :内部函数使⽤了外部函数的变量
或者,当函数可以记住并访问⾃⼰的作⽤域链时,就会产⽣闭包。
记住:指的是->执⾏上下⽂的数据
闭包:就是某个函数要挂了,但是不能把变量带⾛,把数据放到⼀个容器⾥⾯给后⾯调⽤者。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。