括号中的 JSLint 表示音频未定义,但不抱怨图像

JSLint in Brackets says Audio is not defined, but doesn't complain about Image

我有这个代码:

var me = {
    PreloadImage: function(src) {
        var e = new Image();
        e.src = src;
    },
    CreateAudio : function(src) {
        var c = new Audio(src);
        c.play();
    }
}

我对 new Audio() 有疑问,因为括号中的 JSLint 表示 Audio 尚未定义,但对 Image 则不同:

有时我必须做类似 window.console.log 而不是 console.log 的事情,因为 console.log 没有定义,但如果是这样,我必须在 [=13 之前添加什么=] 和 Image?

您必须等待 DOM 准备就绪。由于您使用的是 jQuery,请将您的代码封装在其中:

$(document).ready(function () {
  // Your code...
});

您也可以使用以下语法:

$(function () {
  // Your code...
});

(额外提示:在代码中使用 switch 指令。RoNBeta.js 有点可怕...)

而不是 var c = new Audio(src); 使用 var c = document.createElement('audio'); c.src=src; c.play();

接受的答案对我来说似乎不是解决该问题的最佳方式。您应该更改 JSLint 选项或在该特定行上禁用该规则。

将其添加为全局

JSLintESLint 中,您可以将其添加为全局来修复它:

{
    "globals": {
        "Audio": true
    }
}

添加浏览器环境

ESLint::

{
   "env": {
       "browser": true
   }
}

JSLint:

{
    "browser": true
}

括号中的 JSLint 选项

您也可以在 Brackets 的首选项中更新它们:

"jslint.options": {
    "browser": true,

     OR

    "globals": {
        "Audio": true
    }
}

在该行禁用 linting 或忽略该规则

您还可以为该行或该行上的特定规则禁用 linting:

ESLint:

const c = new Audio(src); // eslint-disable-line

或:

// eslint-disable-next-line
const c = new Audio(src);

JSLint:

const c = new Audio(src); // jslint ignore:line