工作JS代码在压缩时会收到错误消息:"语法错误:名称预期"

时间:2016-08-26 21:17:27

标签: javascript

我正在创建一个类,使我能够通过选择器选择任何元素并快速应用JS方法。我对代码bellow(这是我的代码的第一部分)有一个小问题。当我用Koala或jscompress.com压缩它时,我收到一条错误消息:

  

SyntaxError:预期名称(行:31,col:31)

该行对应于以$.prototype.method开头的包装器方法。我不明白错误是什么,因为我的代码在本地和实时网站上完全正常工作。

不知怎的,那里出现了错误。我尝试将变量name更改为另一个,但它给了我同样的错误。

var $ = function(element) {
  if(!(this instanceof $)) {
    return new $(element);
  }

  // select all elements with this identifier
  this.elements = document.querySelectorAll(element);
  this.length = this.elements.length;
  if(this.length == 0) {
    return this;
  }

  // by default select the first element of querySelectorAll
  this.element = this.elements[0];
  this.css = this.element.style;

  // first method applied will be exectuted directly
  this.delayTime = 0;
}

// add a time to the delay timer
$.prototype.delay = function(delayTime) {
  // set a delay for the following method applied
  this.delayTime += delayTime;

  return this;
}

// wraps the method into a setTimeout
$.prototype.method = function(name, fn) {
  $.prototype[name] = function(...args) {
    var that = this;
    if(this.length != 0) {
      setTimeout(function() {
        // only one relevant param is passed
        fn(that, args[0]);
      }, this.delayTime);
      return this;
    }
    return 'element does not exist!';
  };
}

提前致谢!

2 个答案:

答案 0 :(得分:3)

错误消息指向此行:

  $.prototype[name] = function(...args) {

因为您使用的缩小器不理解ECMAScript 6扩展语法。

答案 1 :(得分:1)

您获得的错误是指差价运算符 - ...args

点差运算符相对较新,可能不受你的minifier支持。

要解决此错误,请从第31行的参数列表中删除...args。在第36行,使用arguments对象代替 - fn(that, arguments[0]);