我知道 JavaScript 的执行上下文是在调用函数时创建的。但我不明白下面的例子。示例 1 和示例 2 非常相似。
然而,这些结果并不相同。
我已经引用了链接。You-Don't-Konw JS和博客参考以及与 stackoverflow 相关的问题
示例 1
var value = "Hello";
function bar() {
var value = "Bye";
function foo() {
return value;
}
console.log(foo());
}
bar(); // Bye
示例 2
var value = "Hello";
function foo() {
return value;
}
function bar(func) {
var value = "Bye";
console.log(func());
}
bar(foo); // Hello
我希望结果示例 1 和示例 2 都是 Bye。如果 JavaScript 的执行上下文是在函数调用的时候创建的,为什么两个结果不同呢?