【发布时间】:2019-01-07 13:17:00
【问题描述】:
我刚刚学习 ES6 并了解了箭头函数。我正在浏览现有文件并一一转换功能。我已经转换了许多函数,除了 1 之外,所有函数都像以前一样工作。
这样做,我可以调用page 来获取当前文件名
let textArr = getPage.textArr;
let headingArr = getPage.headingArr;
const page = getPage.filename;
function getPage() {
const url = window.location.pathname,
fileWithExtension = url.substring(url.lastIndexOf('/')+1),
filename = fileWithExtension.split('.').slice(0, -1).join('.')
;
if (filename == "foo") {
textArr = [
`Text`,
`Text`
];
headingArr = null;
return {filename, textArr, headingArr}
}
}
保持原样,转换为箭头函数,然后在控制台中调用page,我得到:
getPage 没有在第 1 行定义
const getPage = () => {
const url = window.location.pathname,
fileWithExtension = url.substring(url.lastIndexOf('/')+1),
filename = fileWithExtension.split('.').slice(0, -1).join('.')
;
if (filename == "foo") {
textArr = [
`Text`,
`Text`
];
headingArr = null;
return {filename, textArr, headingArr}
}
}
【问题讨论】:
-
你需要有平衡支架。您在发布的问题中缺少一个右括号。
-
getPage是一个函数,而不是一个属性。调用函数。getPage.filename未定义(根据您的第一个代码块),而getPage().filename(可能)未定义。 -
在处理
arrow functions时,你必须先定义getPage然后调用它。否则会报错
标签: javascript ecmascript-6 arrow-functions