首页 > 解决方案 > 试图了解我的 JS 时钟上的错误

问题描述

我试图完成一个用于 JavaScript 的 OpenClassRoom 练习,在这个练习中,你必须编写一些代码来“告诉你”它会在一秒钟内完成,所以有我的代码,但是当我运行它时,我有一个错误:未捕获的 ReferenceError:heures 未在 :6:18 定义

    let heures = 14;
    let minutes = 17;
    let secondes = 59;

    if ((minutes === 59) && (secondes === 59))
      {
        let heures = Number(heures)+1
        let minutes = 00
        let secondes = 00
        console.log(heures+":"+minutes+":"+secondes) 
      }

    else if ((secondes === 59) && (minutes !== 59))
      {
        let heures = heures
        let minutes = minutes+1
        let secondes = 00
        console.log(heures+":"+minutes+":"+secondes) 
      }

    else if ((heures === 23) && (minutes === 59) && (secondes === 59))
      {
        let heures = 00
        let minutes = 00
        let secondes = 00
        console.log(heures+":"+minutes+":"+secondes) 
      }
  
    else if ((heures !== 23) && (minutes !== 59) && (secondes !== 59))
      {
        let heures = heures
        let minutes = minutes
        let secondes = secondes + 1
        console.log(heures+":"+minutes+":"+secondes) 
      }

谢谢你的帮助,对不起我的英语

标签: javascript

解决方案


您正在重新声明let导致错误的变量。let用于创建“块范围的变量”,并且由于您在if语句的不同块中使用它,因此您实际上是在创建具有相同名称但具有不同范围的不同变量。

您只需要声明一次变量,然后您可以根据需要为它重新分配一个值。

let heures = 14;
let minutes = 17;
let secondes = 59;

if ((minutes === 59) && (secondes === 59)) {
   heures = Number(heures) + 1;
   minutes = 00;
   secondes = 00;
   //console.log(heures+":"+minutes+":" + secondes) ;
} else if ((secondes === 59) && (minutes !== 59)) {
   //heures = heures; <-- Setting a variable to itself makes no change to the program
   minutes = minutes + 1;
   secondes = 00;
   //console.log(heures+":"+minutes+":"+secondes) ;
} else if ((heures === 23) && (minutes === 59) && (secondes === 59)) {
   heures = 00;
   minutes = 00;
   secondes = 00;
   //console.log(heures+":"+minutes+":"+secondes) ;
} else if ((heures !== 23) && (minutes !== 59) && (secondes !== 59)) {
   //heures = heures;    <-- Setting a variable to itself makes no change to the program
   //minutes = minutes;  <-- Setting a variable to itself makes no change to the program
   secondes = secondes + 1;
   //console.log(heures+":" + minutes + ":" + secondes);
}
// No need to have this in each branch of the if statement
// when you want to do it in all cases.
console.log(heures+":" + minutes + ":" + secondes);


推荐阅读