使用布尔值 "True" 作为表达式在 while 循环中求值

Using the boolean "True" as an expression to evaluate in a while loop

我最近正在制作一个小脚本,它会询问电视剧的标题并将它们记录在控制台的数组中。我使用了一个关键字来停止循环,它是 'terminate' 并且它不应该被包括在内,但是,下面的代码将关键字添加到数组中。

//----------------第一个案例代码--------------------//

let lista = [];
let series;

function collect(){
  while (series !== 'terminate'){
    series = prompt('Add a tv show');
    lista.push(series);
  }
}

collect();

console.log(lista);

更令人困惑的是,在下一段代码中,我设法让脚本将关键字排除在数组之外。

//------------------------第二种情况代码------------ --------------//

let lista2 = [];
let series;

while (true){
  series2 = prompt('add tv serie');
  if (series2 !=='terminate'){
    lista2.push(series2);
  }else{
    break;
  }
}
console.log(lista2);

我的问题是,与使用第一种情况代码的第一种情况相比,使用布尔值作为表达式在循环中求值会如何影响结果?

基本上您需要在输入和将字符串添加到数组之间进行检查。

为了永远循环,您需要一个计算结果为 truthy 值的表达式。该值是一个常量值,与使用两个字符串 series2 !== 'terminate'.

的检查相反

您可以使用 if 语句和 break.

终止内部循环

此外,您可以检查 null 并使用 prompt 的 return 值来取消。

function collect() {
    while (true) {
        const series = prompt('Add a tv show');
        if (series === 'terminate' || series === null) break;
        lista.push(series);
    }
}

let lista = [];

collect();
console.log(lista);

另一种方法,使用 prompt 两次。

function collect() {
    let series = prompt('Add a tv show');

    while (series !== 'terminate' && series !== null) {
        lista.push(series);
        series = prompt('Add a tv show');
    }
}

let lista = [];

collect();
console.log(lista);