我有一个.js文件,使用NodeJS执行。以下是我的文件内容:
var ctry = "America";
function outer(msg) {
console.log(msg + " " + ctry) ;
var ctry = "Canada" ;
}
outer("God Bless");
当我运行这个文件时,我期望看到的是 "上帝保佑美国",但实际上我看到的是 "上帝保佑未定义"。
如果我注释掉内部的 var ctry = 行,我会得到 "上帝保佑美国",如果我将内部的 var ctry = 行移到 console.log 上面,我会得到 "上帝保佑加拿大"。这两种情况似乎很合理,但为什么在 console.log 之后变量 ctry 的定义会导致上面的代码中 ctry 被设置为 undefined?