【问题标题】:JSLint -Expected '{' instead saw 'type'JSLint - 预期的“{”而不是“类型”
【发布时间】:2017-09-23 11:01:11
【问题描述】:

JSLint 不断返回以下错误:预期的 '{' 而不是看到 'type',我该如何解决?

var pfx = ['webkit', 'moz', 'MS', 'o', '']; 
function prefixedEventListener(element, type, callback) {
    for (var p = 0; p < pfx.length; p++) {
      if (!pfx[p]) type = type.toLowerCase();
      element.addEventListener(pfx[p]+type, callback, false);
    }
} 

【问题讨论】:

    标签: javascript jslint


    【解决方案1】:

    我认为根据 JSlint 规则,if 应该有大括号

    if (!pfx[p]) {
      type = type.toLowerCase();
    }
    

    来自 JSLint 文档,

    阻止 (http://www.jslint.com/help.html)

    JSLint 需要带有 functionifswitchwhilefordotry 语句的块,而其他任何地方都没有。

    JSLint 预计 ifwhiledofor 语句将使用块 { 进行,即用大括号括起来的语句}

    JavaScript 允许将 if 写成这样:

    if (condition)
        statement;
    

    众所周知,在许多程序员处理相同代码的项目中,这种形式会导致错误。这就是 JSLint 期望使用块的原因:

    if (condition) {
        statements;
    }
    

    经验表明这种形式更有弹性。

    【讨论】:

      【解决方案2】:

      来自Lint docs

      JSLint 期望 if、while、do 和 for 语句将由块组成{即用大括号括起来的语句}。

      所以线路的问题

      if (!pfx[p]) type = type.toLowerCase();
      

      虽然有效,但对于 lint,该行更容易混淆和出错,它不会将其视为有效的 block

      只是为了让 JSLint 微笑,你可以将它重写为

      if (!pfx[p]) {    
      type = type.toLowerCase();    
      }
      

      【讨论】:

        猜你喜欢
        • 2016-08-21
        • 2011-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-30
        • 2014-04-24
        相关资源
        最近更新 更多