我有一个使用 NodeJS 执行的 .js 文件。这是我的文件的内容:
var ctry = "America";
function outer(msg) {
console.log(msg + " " + ctry) ;
var ctry = "Canada" ;
}
outer("God Bless");
当我运行这个文件时,我希望看到“God Bless America”,但相反,我看到了“God Bless undefined”。
如果我注释掉内部 var ctry = 行,我得到“上帝保佑美国”,如果我将内部 var ctry = 行移到 console.log 上方,我得到“上帝保佑加拿大”。最后两种情况看起来合乎逻辑,但为什么在 console.log 之后的 var ctry 的定义会导致 ctry 在上面的代码中被设置为 underfined?