【问题标题】:Why is it console.log will sometimes print undefined for a variable which has been exported?为什么console.log有时会为已导出的变量打印未定义?
【发布时间】:2016-08-24 12:25:52
【问题描述】:

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

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

// Likes
exports.peaches = 'Peaches'

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

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

【问题讨论】:

    标签: javascript node.js import


    【解决方案1】:

    试试这个:

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

    在您的第一个“方法”中,您实际上并没有导出任何内容。

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

    【讨论】:

    • 好吧,这行得通,但是为什么这行不通呢? var arr = new Array(); arr = getArr(正文);出口.arr = arr;
    • 什么是getArr(body)
    • 它是一个返回字符串数组的方法
    • 信息太少了,伙计。也许你最好开始一个新问题。
    【解决方案2】:

    一般来说,如果你想返回任何 javascript 模块或对象。 您使用 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' 
    

    我希望这是有道理的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 2021-12-16
      • 2011-11-25
      相关资源
      最近更新 更多