【问题标题】:Reference Error in javascript pluginjavascript插件中的引用错误
【发布时间】:2018-03-29 19:59:18
【问题描述】:

我正在创建一些基本插件,但出现参考错误。下面是我的代码

jQuery.fn.validate = function(options) {
  var _self = this;
   // with below call I gets reference error.
  abc();  

    //but if call in below it works fine
  _self.on("submit", function(event) {
     abc();  // works fine
  }),

 abc = function () {
   console.log('here);
 }
};

谁能解释我为什么会收到这个错误以及如何克服它。因为我需要在插件开始时调用一些重置和初始化函数。

【问题讨论】:

  • 您在声明之前调用 abc(),将调用移至声明 abc = function() 的下方的 abc()
  • 您不应该在插件中定义全局名称,您应该将abc 设为本地名称。
  • @Barmar 本地名称是什么意思?可以举个例子吗?
  • var abc = ... 而不仅仅是abc = ...

标签: javascript jquery jquery-plugins


【解决方案1】:

您似乎希望 abchoisted,但您专门使用了一种在执行分配之前未定义 abc 的语法。

您需要将abc = function ... 移动到abc() 的调用上方,使用function abc() { } 定义函数,这将允许它被提升到您的调用上方。

请注意,如果您只是移动赋值,您应该使用var abc = function ... 并创建一个局部变量,而不是您当前正在创建的全局abc 变量。

【讨论】:

  • 好吧,我明白你的意思了,但是当我调用 _self.on("submit", function(event) { abc(); // 工作正常 }),
  • @Amanjaura 因为这是在您分配之后调用的,所以在将来某个时间单击按钮并调用该回调时。
  • 那么在创建函数abc = functionsfunction abc() 时我应该在插件中使用哪种方法?或者关于如何在 js 插件中创建和初始化函数是否有更好的解决方案。无论如何感谢上述解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 2013-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多