javascript - 函数转换为箭头函数 - 函数未定义

标签 javascript ecmascript-6 arrow-functions

我刚刚学习 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 is not defined at line 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}
  }
}

最佳答案

这是一个提升问题。默认情况下,函数会被提升。分配给变量的箭头函数不会发生这种情况。如果你想让它起作用,你需要在调用它之前移动 const 定义。像这样:

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}
  }
}

let textArr = getPage().textArr;
let headingArr = getPage().headingArr;
const page = getPage().filename;

关于javascript - 函数转换为箭头函数 - 函数未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54075180/

相关文章:

javascript - 在jquery循环中创建div元素

javascript - IE 中的 ExtJS 组合框问题

javascript - TS错误: Type 'unknown' is not assignable to type 'FunctionComponent<any> due to withRouter

javascript - react - 类型错误 : Cannot read property 'map' of undefined

angular - Angular2 Typescript 中的箭头函数 - IE11

javascript - 我应该在每个渲染器上调用一个函数还是在 React 类组件中使用箭头函数?

javascript - jQuery,未捕获的类型错误

javascript - 将对象中的静态元素附加到对象数组中的每个对象javascript

javascript - 在 ES6 中声明一个函数?

javascript - 单击按钮时的 AJAX 请求不更新 DOM