Javascript 了解将truthy/falsy变量用作while循环中的测试条件
使用变量作为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
const falsy = "";
while (falsy) {
console.log(1);
}
据我所知,测试条件'falsy'并不是指常数'falsy',而是在它的扩展形式中,类似于:'while(falsy===true){…}'。在这种情况下,由于falsy(常量)的计算结果为false,语句变为'while(false==true){…}',这使得测试条件为false,并且块不执行
让我困惑的是,测试条件中的“falsy”似乎涉及两件事:
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
所做的——它每次都将表达式作为真实值进行计算,以确定它是否应该继续循环。