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

问题描述 投票:0回答:1

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

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);

我的问题是,与第一个案例代码的第一个案例场景相比,使用布尔值作为在循环中求值的表达式如何影响结果?

javascript
1个回答
2
投票

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

为了永远循环,您需要一个计算结果为 truthy 值的表达式。该值是一个常量值,而不是使用两个字符串进行检查

series2 !== 'terminate'

您可以使用 if 语句和

break
来终止内部循环。

此外,您可以检查

null
并使用
prompt
的返回值来取消。

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);

© www.soinside.com 2019 - 2024. All rights reserved.