Javascript 了解将truthy/falsy变量用作while循环中的测试条件

Javascript 了解将truthy/falsy变量用作while循环中的测试条件,javascript,Javascript,使用变量作为while循环测试条件的概念让我有点困惑: const falsy = ""; while (falsy) { console.log(1); } 据我所知,测试条件'falsy'并不是指常数'falsy',而是在它的扩展形式中,类似于:'while(falsy===true){…}'。在这种情况下,由于falsy(常量)的计算结果为false,语句变为'while(false==true){…}',这使得测试条件为false,并且块不执行 让我困惑的是,测试条件中的“fa

使用变量作为while循环测试条件的概念让我有点困惑:

const falsy = "";
while (falsy) {
    console.log(1);
}
据我所知,测试条件'falsy'并不是指常数'falsy',而是在它的扩展形式中,类似于:'while(falsy===true){…}'。在这种情况下,由于falsy(常量)的计算结果为false,语句变为'while(false==true){…}',这使得测试条件为false,并且块不执行

让我困惑的是,测试条件中的“falsy”似乎涉及两件事:

  • 它指的是实际的常数“falsy”,用于评估测试条件的真实性/错误性
  • 它表示需要满足的条件(即falsy,因为测试条件正在测试falsy(常数)是否为真)
  • 有人能证实我对在试验条件下使用truthy/falsy变量的理解吗

    JavaScript具有隐式强制,在本例中,
    Boolean
    。它不等同于
    while(falsy==true)
    ,而是更接近
    while(Boolean(falsy))

    有关规则,请参见

    例如,如果测试为
    x===true
    ,则以下不会打印1,但是,我们说«x是真的»,因为
    Boolean(x)
    是真的

    const x=“:)”;
    if(x){
    控制台日志(1);
    }
    
    info(“为了演示,”,x==true,布尔值(x))条件是一个表达式,当作为布尔值进行计算时,该表达式要么为真,要么为假。任何值和任何表达式都可以强制转换为布尔值。MDN是文档的良好来源。变量名是什么并不重要;你可以说
    const falsy=true在顶部,它仍然会计算循环体。我不清楚1和2之间的区别。需要满足的条件是变量
    falsy
    包含一个truthy值。@Barmar In 1。我是说falsy代表一个被定义为布尔值的常数。在2。我的意思是这里也有一个条件(即falsy===true?)。我相信我没有意识到的是,语法非常简洁,在我看来,这里发生了两件截然不同的事情,但它们没有被清楚地表示出来。这正是
    while
    所做的——它每次都将表达式作为真实值进行计算,以确定它是否应该继续循环。