世界上什么会使第二个参数返回true
?
警告:它将无限循环并可能崩溃您的浏览器
for(;;){
//...
}
我完全没有期望会有任何循环...
但它正在运行,这让情况更糟,因为它只能在某些东西被评估为true
时才能运行,或者我错过了什么?
世界上什么会使第二个参数返回true
?
警告:它将无限循环并可能崩溃您的浏览器
for(;;){
//...
}
我完全没有期望会有任何循环...
但它正在运行,这让情况更糟,因为它只能在某些东西被评估为true
时才能运行,或者我错过了什么?
来自for
MDN
for ([initialization]; [condition]; [final-expression])
statement
[Initialization]
和[final-expression]
并不是必需的,这使得构造变成了一个简单的while
循环。但相关部分如下:
conditionfor(;;){}
等同于while(true){}
,而且比后者少4个字符。我不知道缩小器是否利用了这一点!if()
一样? - Robert Harveyif()
不能没有条件,但却没有限制 for()
。 - rid没有“使第二个参数返回true
”这样的东西。也没有第二个参数。ECMAScript Language Specification (ECMA-262 5th Edition)的12.6.3节如下所述:
a. 如果第一个Expression存在,则
i. 让testExprRef成为评估第一个Expression的结果。
ii. 如果GetValue(testExprRef)是false,则返回(
normal
,V,empty
)。
它所指的“第一个Expression”是for
语句中分号之间的可选表达式。如果存在,则程序执行上述引用的步骤(i)和(ii)。如果不存在该表达式,则程序简单地不执行for
语句算法的步骤(i)和(ii)。