【问题标题】:JSHint error - Expected an assignment or function call and instead saw an expressionJSHint 错误 - 需要赋值或函数调用,但看到的是表达式
【发布时间】:2012-02-23 09:49:09
【问题描述】:

为什么以下代码会触发“预期的赋值或函数调用,而不是表达式”。在JSHint?如果未定义特定变量或变量,我认为这是保护块不被执行的正确方法......

!function($) {
    "use strict";

    // jQuery-based code here
    $('.test').show();
}(window.jQuery);

【问题讨论】:

  • 这一定是 JSHint 或编码风格的执行中的一些错误。因为!function($){"use strict";}(window.jQuery); 会触发错误而(function($){"use strict";}(window.jQuery)); 不会。并且函数调用的优先级高于 javascript 中的! 运算符。

标签: javascript jshint


【解决方案1】:

替换 !在整个调用周围带有括号的函数前面(例如(function(a,b){}("a","b"))),一切都应该很好。这促使我问为什么它首先存在,因为函数没有返回值。

与赋值相反的任何表达式都被 JSHint 标记为您引用的消息。

【讨论】:

  • 有一些编码风格要求在编写自调用函数时使用!function(/*...*/){/*...*/}(/*...*/);,以便让正在阅读代码的人在定义后调用它。
  • 从来没有遇到过,我使用的符号是将函数定义放在括号中:(function (/*...*/) {/*...*.}) (/*...*/)。我可以理解的理由!符号。
  • 我也使用“括号中的函数定义”表示法,即“!”一个是丑陋的 imo,可以用一个很好的评论代替。
  • 删除它时出现错误,因为我没有该函数的名称 - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
猜你喜欢
  • 1970-01-01
  • 2015-05-22
  • 2013-08-06
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
相关资源
最近更新 更多