gpt4 book ai didi

javascript - 浏览器文件是否预计不会通过 jshint 验证?

转载 作者:行者123 更新时间:2023-11-30 17:13:59 24 4
gpt4 key购买 nike

考虑以下几点:

$ cat example.js 
function f () { return 1; }
exports.F = f;
$ browserify example.js > exampleBundle.js
$ jshint --verbose example.js
$ jshint --verbose exampleBundle.js
exampleBundle.js: line 1, col 187, Missing semicolon. (W033)
exampleBundle.js: line 1, col 279, Missing semicolon. (W033)
exampleBundle.js: line 1, col 301, Missing semicolon. (W033)
exampleBundle.js: line 1, col 321, Missing semicolon. (W033)
exampleBundle.js: line 1, col 407, Missing semicolon. (W033)
exampleBundle.js: line 5, col 15, Missing semicolon. (W033)

6 errors
$

此外,无论其值(value)如何,jquery-1.11.1.min.js没有通过 jshint 验证。

此外,我使用的是4.2.1版的browserify和2.5.6版的jshint:

$ browserify --v
4.2.1
$ jshint --v
jshint v2.5.6
$

最后,如果我修改 .jshintrc 文件以包含以下形式的语句(取自 here ):

$ cat .jshintrc 
{
"browserify": true
}
$

错误仍然存​​在。

帖子的第一个版本 (BEGIN)

在帖子的第一个版本中,我收到了不支持该选项的错误消息:

example.js: line 0, col 0, Bad option: 'browserify'. (E001)

但是,正如有人指出的那样,我运行的是 2.5.3(特别是 2.5.2)之前的 jshint 版本。

帖子的第一版(完)

尽管如此,问题仍然存在:这是预期的吗?看起来 browserify 正在生成 jshint 无法验证的代码。

最佳答案

当然生成的 JS 文件不会通过 jshint。

请记住,像 jshint 这样的工具的目的是指出您在代码中可能犯的错误。从理论上讲,强制使用 JavaScript 语法的严格子集有助于防止您犯错误,并使您和其他人将来更容易理解您的代码。

browserify 和 minification 等工具的输出并不适合人类消费。压缩器有意利用技术上合法但对人类不友好的语法,以实现最大的字节节省。

考虑:

if (iAmThirsty == true) {
drinkBeer();
}

通过重命名和语法转换的结合,一个压缩器可能会把它变成类似这样的东西:

t&&d()

因为 && 短路,它们做同样的事情。后者肯定不会通过 jshint(或代码审查),但这无关紧要。你写了一些人类容易消化的东西,这就是将来要修改的东西。

您永远不会使用处理后的输出;您将始终修改原始源代码并再次编译。 Jshint 的存在是为了确保您的 是高质量的。在处理过的输出上运行它没有意义。

关于javascript - 浏览器文件是否预计不会通过 jshint 验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26466083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com