从webpack ES6中的函数返回值 - 范围

时间:2016-06-30 13:30:14

标签: javascript

我在webpack模块中返回一个值,但是我无法在函数外部使用它。除非我犯了一个愚蠢的错误,否则我想也许我错过了关于模块工作方式的基本信息。有人可以开导我吗?

function getProjectID() {
  const project_id = document.getElementById('project-title')
                              .getAttribute('data-project-id');
  console.log("Project id inside is" + project_id); //Logs out the correct value
  return project_id;
}

getProjectID();

console.log("Project id outside is" + project_id); //Uncaught ReferenceError: project_id is not defined

2 个答案:

答案 0 :(得分:2)

JavaScript具有函数范围,因此project_id不会在函数外部访问,因为它是声明它的位置。

指定返回值以访问它:

const project_id = getProjectID();

答案 1 :(得分:0)

根据您的代码和问题,很难说出您实际想要返回的内容,但我猜您想要一个可以从data-project-id返回#project-title属性值的模块。

如果我的假设是正确的,那么您需要将module.exports实际设置为getProjectID函数。

getProjectId.js

module.exports = function getProjectID() {
    return document.getElementById('project-title').getAttribute('data-project-id');
}

注意:您是否将module.exports函数定义为匿名无关紧要,但为了清楚起见,我保留了名称。

someOtherFile.js

var getProjectId = require('getProjectId');
console.log('Project id is... %s', getProjectID());