【发布时间】:2016-08-16 14:39:07
【问题描述】:
我正在阅读 Javascript Definitive 指南,我遇到了关于函数范围的声明:“JavaScript 的函数范围意味着在函数中声明的所有变量都是可见的在整个函数体中“
由于 bar() 在其中有一个变量 b ,而该变量又在函数 foo() 中声明。为什么在这种情况下不提升 b 并且输出不是未定义的(内部变量 b 应该在整个 foo() 的主体中可见)?
var b =5 ;
function foo(x)
{
console.log(b);
function bar()
{
var b=4;
}
}
foo(4);
【问题讨论】:
-
您自己回答问题。由于 bar 是一个函数,因此 b 的作用域为 bar。并且对 foo 是不可见的。只有 bar 对 foo 可见,但 bar 内的所有内容均不可见。
标签: javascript hoisting