编辑器在我的代码上向我发出警告,错误消息

时间:2014-01-19 12:59:44

标签: javascript debugging

// 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++ ) {

错误消息:期望一个条件表达式,而是看到一个赋值。

任何人都知道为什么它会把这个“消息”扔给我?

2 个答案:

答案 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)

在for语句中分配了

event = plugin.settings.events[i]