JavaScript Validator 一直在说关于第 11 行的意外“如果”,我不知道为什么

JavaScript Validator keeps saying Unexpected 'if' regarding line 11, and I can't figure out why

本文关键字:如果 意外 为什么 我不知道 一直 Validator 关于第 JavaScript      更新时间:2023-09-26

当我使用 http://codebeautify.org/jsvalidate 验证下面的代码时,它一直说第 11 行

if ($('#s4-bodyContainer').hasScrollBar().horizontal) {

是 - 意想不到的"如果" - 我不知道如何解决它。 这是完整的代码。 我将其放在 SharePoint 母版页的底部,以解决在某些屏幕上显示宽表的问题,这些表格已扩展到品牌页眉和页脚之外。 这段代码应该做的是检测浏览器窗口中是否有水平滚动条。 如果是这样,那么它将一些类添加到一些div 标签中以解决问题。

(function($) {
    "use strict";
    $.fn.hasScrollBar = function() {
      var e = this.get(0);
      return {
        horizontal: e.scrollWidth > e.clientWidth
      };
    }
    if ($('#s4-bodyContainer').hasScrollBar().horizontal) {
      // has scrollbar so add some classes
      ($("#s4-bodyContainer").addClass("ecs-absolute"));
      ($("#s4-workspace").addClass("ecs-relative"));
    });
尝试在

hasScrollBar 的定义后添加分号 ; 。外部功能周围也有不匹配的大括号。这对我有用:

(function ($) {
    "use strict";
    $.fn.hasScrollBar = function () {
        var e = this.get(0);
        return {
            horizontal: e.scrollWidth > e.clientWidth
        };
    }; // <-- added a semicolon here
    if ($('#s4-bodyContainer').hasScrollBar().horizontal) {
        // has scrollbar so add some classes
        ($("#s4-bodyContainer").addClass("ecs-absolute"));
        ($("#s4-workspace").addClass("ecs-relative"));
    }
})(); // <-- fixed up your IIFE here

你确实有一个语法错误。你不应该在if之后);.您可能打算拥有以下内容:

if ($('#s4-bodyContainer').hasScrollBar().horizontal) {
    // has scrollbar so add some classes
    ($("#s4-bodyContainer").addClass("ecs-absolute"));
    ($("#s4-workspace").addClass("ecs-relative"));
  }
}); // <-- Closes off the IIFE

但是您可能还想调用该 IIFE,因此将最后一行更改为:

})(jQuery); // <--- Closes off IIFE

修复此问题后,您的代码完全有效。

函数赋值后缺少分号:

$.fn.hasScrollBar = function() {
  var e = this.get(0);
  return {
    horizontal: e.scrollWidth > e.clientWidth
  };
}; // <<<<< here!

自动执行函数的闭包应该没问题。 我更喜欢这种形式:

fn = ( function () { ... }( jQuery ) );

这将传递 jslint。 我建议你使用它而不是在线验证器。

$ sudo npm install -g jslint