javascript - typescript 错误: Function declarations are not permitted in blocks in strict mode

标签 javascript typescript

我尝试运行脚本,但出现此错误:在以“ES3”或“ES5”版本为目标期间,严格模式下的 block 中不允许使用函数声明。模块自动处于严格模式。

我使用 typescript ,这是脚本:

export default () => {

  if(document.getElementById("myRange")){
    //slider 
    var slider = document.getElementById("myRange") as HTMLInputElement;
    var output = document.getElementById("demo");
    var gainTimeOutput = document.getElementById("time");
    var sliderEco = document.getElementById("myRange-eco") as HTMLInputElement;
    var outputEco = document.getElementById('demo-eco');
    var eco = document.getElementById('eco');
    outputEco.innerHTML = sliderEco.value;
    output.innerHTML = slider.value;

    function movingSlider(){ <-- Error happens here 
      output.innerHTML = slider.value;
      var convertSlider = parseInt(slider.value); 
      var convertSliderEco = parseInt(sliderEco.value);

      var gainTime = Math.round(convertSlider).toString();
      var gainMoney = (Math.round(convertSlider* 2).toString();

      gainTimeOutput.innerHTML = gainTime + "h"; 
      outputEco.innerHTML = sliderEco.value;
      eco.innerHTML = gainMoney + "€";
    }

    slider.oninput = e => {
      movingSlider()
    };

我不明白为什么,问题是当我删除我的 if(document.getElementById("myRange")) 时,效果很好, 有人知道为什么我会出现此错误以及我应该如何解决它?

最佳答案

这几乎就是错误所说的内容。您在 block 中有一个函数声明,其行为为 weird在 ES6 中指定之前跨环境且不可预测,因此您的设置不允许这样做。相反,将函数表达式分配给变量名。改变

function movingSlider(){

const movingSlider = function movingSlider(){

如果您发布了导出函数的完整代码,那么代码可能会更清晰并且如果您只是返回,则不需要上述内容如果 myRange 不存在,则提前:

export default () => {
  const slider = document.getElementById<HTMLInputElement>("myRange");
  if (!slider) {
    return;
  }
  // rest of your code

这可以让您避免在函数的其余部分中出现不必要的缩进空间。

关于javascript - typescript 错误: Function declarations are not permitted in blocks in strict mode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60349932/

相关文章:

javascript - 在 Facebook 上运行 JQuery 或 Javascript

javascript - Nightwatch - 使用执行来填充表格数据单元格

javascript - 在 Luxon 中像持续时间一样解析 ISO 8601

typescript :为什么 PromiseLike 是异步函数中对象中 this 的可能类型?

javascript - 如何拦截非 JSON 的响应

javascript - 在表单加载时设置 IFRAME 的 src,避免加载竞争

javascript - 如何向 NodeJS 服务器提供客户端包 (webpack)?

javascript - 如何在Jquery中后台运行一段代码

node.js - 您应该如何在 TypeScript 中为 Morgan 创建 Winston 记录器流

php - 需要抓取需要设置 "i agree"cookie 的网站内容