【问题标题】:SublimeLinter-jshint: Errors when script in <body> tagsSublimeLinter-jshint:<body> 标签中的脚本时出错
【发布时间】:2023-11-09 23:32:01
【问题描述】:

我似乎在使用 SublimeLinter-jshint 时遇到了问题,我在 JSLint 文档中找不到我想要的东西。起初,我认为这是 "Missing semicolon" 的问题(在左大括号之后),但当我试图忽略这个问题并继续编码时,越来越多的其他错误不断出现起来。

我目前正在学习 JS 教程,并且我的所有脚本都内联。我确实注意到,当我将所有 JavaScript 移动到 HTML 文件头部的脚本中时,所有警告都消失了(我通过故意破坏一些代码来测试它是否仍然有效,一切都很好)。

我做错了什么?

<!DOCTYPE HTML>
<html lang="en">
<head> 
    <title>Object Oriented JS</title>
    <script type="text/javascript">
        /*jslint evil: true */

        function Person(name, street){
            this.name = name;
            this.street = street;
            this.info = function(){
                return "My name is " + this.name + " and I live on " + this.street;
            };
        }

    </script>
</head>
<body>
<script type="text/javascript"> 

function Mammal(name){
    this.name = name;
    this.getInfo = function(){
        return "The mammals name is " + this.name;
    };
}

Mammal.prototype.sound = "Grrr";

Mammal.prototype.makeSound = function() {
    return this.name + " says " + this.sound;
};

var grover = new Mammal("Grover");

document.write(grover.makeSound() + "<br />");

for(var prop in grover){
    document.write(prop + " : " + grover[prop] + "<br />");
}


</script>   
</body>
</html>

补充一点,浏览器中的一切都加载得很好,所以我很确定这些是错误的警告。

【问题讨论】:

  • 是在抱怨document.write吗?您应该阅读有关 DOM 操作的现代方法。
  • 它是,直到我压制它。它目前正在抱怨 缺少分号(例如,它声称应该在函数 Mammal(name) 之后),期待一个赋值或函数调用,而是看到一个表达式创建全局“for”变量。应该是 'for (var varprop...'

标签: javascript sublimetext3 jslint jshint sublimelinter


【解决方案1】:

我能够通过 jshint 的 --extract 参数克服这个问题,.jshintrc 文件中尚不支持该参数。我在SublimeLinter.sublime-settings 中添加了以下几行,它为我修复了它:

"linters": {
    "jshint": {"args": ["--extract=always"]}
}

参考:

【讨论】: