看一个闭包代码
function wait(message)
{
setTimeout(function timer()
{
console.log(message);
},1000);
}
wait("hello");
根据 you dont know js所说
闭包 一 可以访问外层变量 二 在外部作用域下执行
我试着用RDS 与 LHS理解遇到问题了
先明确下词法作用域
全局作用域下
wait setTimeout函数
wait 作用域下
message形参 timer函数
setTimeout 作用域下
fn 因为没有列出这个函数,但是一定有这个形参
第一步
RDS wait 全局作用域下成功 因为是在全局作用域下执行的
隐式的 message = 'hello' LHS message 这个可以理解成是在wait作用域下执行的吗?所以LHS成功
RDS setTimeout 在wait作用域里执行,wait失败,到全局找到执行
隐式的 fn = function timer() 可以理解成在setTimeout作用域下执行的吗?所以 LHS 成功
然后 RDS timer 这个怎么理解啊!作用域是哪个呢? 这个部分我很迷惑啊!!求人帮我解答下?最好能指明我思路的错误!!
斯蒂芬大帝
相关分类