词法作用域
和动态作用域
,而这篇文章我们一起来学习 动态作用域
。function foo() {
console.log(a); // 2
}
function bar() {
var a = 3;
foo();
}
var a = 2;
bar();
在动态作用域中,它并不关心函数和作用域是如何声明以及在何处声明的,只关心他们从何处调用的
。换句话说,作用域链是基于调用栈的,而不是代码中的作用域嵌套的。
事实上 JavaScript 并不具有动态作用域,它只有词法作用域
。但 this 机制的存在在某种程度上很像动态作用域。
•问题标注 Q:(question)
•答案标注 R:(result)
•注意事项标准:A:(attention matters)
•详情描述标注:D:(detail info)
•总结标注:S:(summary)
•分析标注:Ana:(analysis)
•提示标注:T:(tips)