我有以下代码:
var inNode = function () {
return (typeof module !== 'undefined' && module.exports) ? true : false;
};
if (inNode()) {
global.TestObj = { 'test' : 'hello!' };
} else {
var TestObj = { 'test' : 'hello!' };
}
console.log(TestObj);
TestObj将返回未定义。
我知道在其他编程语言中,如果在if语句中声明变量然后尝试调用它,则编译器会抱怨。我认为JavaScript中不是这种情况-如果是这样,错误消息在哪里?
干杯!
最佳答案
由于JavaScript中variable hoisting的概念,所有变量声明都移至范围的顶部,因此您的代码实际上是:
var inNode = function () {
return (typeof module !== 'undefined' && module.exports) ? true : false;
};
var TestObj;
if (inNode()) {
global.TestObj = { 'test' : 'hello!' };
} else {
TestObj = { 'test' : 'hello!' };
}
console.log(TestObj);
这意味着已定义它,但仅在执行
else
块时才具有值。否则为undefined
。关于javascript - NodeJS提示如果在if语句中设置了对象,则该对象未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24890107/