// Find events for this date
for ( var i = 0, event; event = plugin.settings.events[i]; i++ )
{
if ( event[plugin.settings.end] >= begin && event[plugin.settings.begin] < end )
{
// Append matches to list
var summary = event[plugin.settings.summary],
beginTime = (( event[plugin.settings.begin] > begin ) ? event[plugin.settings.begin] : begin ).toTimeString().substr(0,5),
endTime = (( event[plugin.settings.end] < end ) ? event[plugin.settings.end] : end ).toTimeString().substr(0,5),
timeString = beginTime + "-" + endTime,
$listItem = $("<li class='ui-event-item' data-icon='false'><a href='#' class='event-item-link' rel='"+ event.eid +"'><h3></h3><p></p></a></li>").appendTo($listview);
plugin.settings.listItemFormatter( $listItem, timeString, summary, event );
}
}
代码工作得很好,但是我的编辑在这一行上给我一个警告/错误:
for ( var i = 0, event; event = plugin.settings.events[i]; i++ ) {
错误消息:期望一个条件表达式,而是看到一个赋值。
任何人都知道为什么它会把这个“消息”扔给我?
答案 0 :(得分:3)
“预期条件表达式,而是看到一个赋值。”
这正是它所说的。 for
语句中的中间表达式通常是某种条件表达式,但您使用了赋值。编辑认为=
是一个应该是==
或===
的拼写错误。
在你的情况下,它(可能)不是一个错字:你实际上确实想要在那一点做作业并且它在for
语句中工作,因为在JS作业仍然评估for
可以视为真实或虚假的值。有些人认为这是一种不好的做法,因为乍一看它确实看起来像一个错字,虽然第二眼看上去很明显,但事实并非如此。
因此,您可以在此时将for
重写为而不是进行分配。或者您可以忽略错误/警告消息 - 这不是实际的JS错误,这是一种风格的东西。
“关于如何”重写“的建议确实消除了这个消息?”
如果plugin.settings.events
是一个数组或类似数组的对象,其中没有任何falsey值(或未定义的元素),那么你可以这样做:
for (var i = 0, event; i < plugin.settings.events.length; i++ ) {
event = plugin.settings.events[i];
// etc.
答案 1 :(得分:1)
event = plugin.settings.events[i]
。