JavaScript函数范围

时间:2014-03-09 23:32:43

标签: javascript scope

有人可以向我解释为什么db在控制台中显示为未定义,给出以下代码:

function connect(){
   var db="Connected to";
  logConnection();
}

function logConnection(){
   console.log(db);   
}

connect();

这显然是一个简化的例子,但实际上我正在使用nodeJS和mongodb。 db变量实际上是与我想要执行查询的数据库的连接。如果我能更详细地理解这一点,那将对我的调试有很大帮助。

1 个答案:

答案 0 :(得分:2)

变量“db”在“connect”中定义,而不是“logConnection”。 JavaScript中的变量是词法范围,这意味着重要的是函数内部的静态嵌套,而不是运行时的动态关系,因为一个函数调用另一个函数。