为什么console.log有时会为已导出的变量打印未定义的?

时间:2016-08-24 12:25:53

标签: javascript node.js import

所以我在node.js(初学者)工作,我正在尝试使用不同脚本中的变量。我发现有时变量会以未定义的形式返回。例如:

//Doesnt like this
var peaches = 'Peaches';
exports.peaches;

// Likes
exports.peaches = 'Peaches'

现在,我需要这个脚本,我发现如果我使用top方法,打印输出是'undefined',而使用第二种方法,打印输出是'Peaches'。

这不会对我产生太大的影响(因为我总是可以使用第二种方法),但是,当我尝试使用第二种方法导出数组时,它会打印为未定义的。但令人困惑的是,这只会在我尝试导入两个数组时发生(第二个将始终给出'undefined'但另一个将起作用。这是否与程序的执行流程有关?(所以它有时间执行第一个脚本,但不执行第二个脚本?

2 个答案:

答案 0 :(得分:4)

试试这个:

var peaches = 'Peaches';
exports.peaches = peaches;

在你的第一个"方法"你实际上并没有出口任何东西。

exports变量只是为每个变量创建的普通JavaScript对象 你的模块。

答案 1 :(得分:0)

通常,如果要返回任何javascript模块或Object。 您使用module.exports对象,module.exports是您需要导出模块时返回的实际对象。

您用于导出的exports对象,它是module.exports的简写“别名”。

现在,由于您尚未为exports对象分配任何对象,因此它未定义。

以这种方式思考。

object = {
  key1:'value1',
  key2:'value2'
}
console.log(object[key1]) // value1
console.log(object[key2]) // value2
//Now, if you try to access something that is not assigned
console.log(object[key3]) // undefined

您的出口对象也发生了同样的情况, 当你这样做时,你没有为exports.peaches分配任何内容。

exports.peaches //hence undefined while import

相反,做

exports.peaches = 'peaches' 

我希望有道理!。