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

Posted

技术标签:

【中文标题】括号中的 JSLint 表示未定义音频,但不抱怨图像【英文标题】:JSLint in Brackets says Audio is not defined, but doesn't complain about Image 【发布时间】:2017-09-11 17:51:17 【问题描述】:

我有这个代码:

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

我对@9​​87654324@ 有疑问,因为括号中的JSLint 表示尚未定义Audio,但对于Image 却没有这样说:

有时我必须做类似window.console.log 而不是console.log 之类的事情,因为console.log 没有定义,但如果是这种情况,我必须在AudioImage 之前添加什么?

【问题讨论】:

代码还能用吗?这只是一个 JSLint 警告,而不是 javascript 错误。 @JJJ 没有。我想我修好了。 【参考方案1】:

var c = document.createElement('audio'); c.src=src; c.play();代替var c = new Audio(src);

【讨论】:

不,要么正确配置 linter,要么使用类似 // eslint-disable-line no-undef【参考方案2】:

接受的答案对我来说似乎不是解决该问题的最佳方式。您应该更改您的 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

【讨论】:

【参考方案3】:

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

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

您也可以使用以下语法:

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

(额外提示:在您的代码中使用 switch 指令。RoNBeta.js 有点吓人......)

【讨论】:

我没有在 RoNBeta.js 中使用 jQuery。我添加了一个功能来检查它。 也许是这样,但我的 JS 文件应该是灵活的。

以上是关于括号中的 JSLint 表示未定义音频,但不抱怨图像的主要内容,如果未能解决你的问题,请参考以下文章

如何告诉 JSLint / JSHint 已经定义了哪些全局变量

JSLint 消息:未使用的变量

为啥 JSLint 更喜欢点符号而不是方括号?

jslint4java 容忍未使用的变量

为啥 jslint 在模板字符串上抱怨 Unexpected '`'

我可以把这个评论放在哪里? JSLint 抱怨展示位置