【问题标题】:jshint: 'use the function form of "use strict"' and 'document is not defined' in simple javascript filejshint:'在简单的javascript文件中使用'use strict'和'document is not defined'的函数形式
【发布时间】:2018-10-14 21:38:52
【问题描述】:

我将它们捆绑在一起,因为我认为它们是相关的。 最简单的简单代码:

'use strict';
const x = document.querySelector('#score strong');

导致以下结果

"use the function form of use strict (W097)"
"document is not defined (W117)"

这可能是错误或警告; W 建议发出警告,但我不知道如何确定。

那么,还有一个问题:这些是警告还是错误,我该如何自己判断?这是在哪里引用的?

我正在使用 Atom 1.31,我认为是 JSHint(不管是什么 - 我对这一切都很陌生)。我正在使用 ES6 - .jshintrc:

{
"esversion": 6
}

我应该如何在全局范围内指定 use strict?将它放在一个函数中以便全局使用意味着,呃,将我的脚本的全部内容放在一个函数中。不?是吗?

而我该如何规避这个文件没有定义的东西呢? 我试过了

const document=this.document;
const document=global.document;
const document=window.document;

所有都会导致警告/错误(无论如何)。

所以,明确地说,我的问题是:

  1. 这些是警告还是错误,我该如何自己判断?

  2. 我应该如何并且确实需要绕过使用严格的东西?

  3. 我该怎么做,我确实需要,规避文档未定义的事情?

【问题讨论】:

  • 1) 这些是由 Atom 的 linting 功能对您的代码进行静态分析而产生的警告。它们是警告,因为 JSHint(linting 规则集)无法了解您可能会在哪里使用此代码。所以它做的最好的就是可以说Hey!您可能想多看一下这个!。无论这些错误如何,您的代码都可能有效,也可能无效。既然您知道它是 JSHint,请阅读文档:jshint.com/docs
  • 许多人只是关闭了其中的许多规则。不建议这样做。理解规则会让你成为更好的 JavaScript 程序员!
  • 您的问题是一个问题,将来应该仍然是一个问题。请不要编辑答案。
  • @RandyCasburn 如果您知道一个好的答案,请回答...我将您的评论编辑到社区 wiki,随时回滚:)

标签: javascript jshint


【解决方案1】:

您需要将strict option 设置为首选全局'use strict',并设置browser option 告诉JSHint 您的脚本针对浏览器。

.jshintrc

{
    "esversion": 6,
    "browser": true,
    "strict": "global"
}

是的,代码开头的“W”表示“警告”。

【讨论】:

  • 谢谢,我现在就试试。实际上,我在发布此问题后立即找到了使用 strict 的(a/another)解决方案,因此我对其进行了编辑,但我也会尝试您的方式。
  • @JL_SO:JSHint 默认想要一个 IIFE,但老实说,这是个糟糕的建议。没有理由不使用顶级严格编译指示,除非您通过连接脚本来捆绑脚本。
  • 谢谢。 IIFE - 我只需要查一下。我会阅读它。顺便说一句,我尝试了您的 jshintrc k/v 对,但它们对我不起作用:我仍然收到两个警告。对严格模式警告有效的是使用 /*jslint node: true */ 文档警告仍未修复。
  • @JL_SO:您确定您更改了正确的 .jshintrc 吗? .jshintrc 中的/* jshint browser: true */"browser": true 应该做同样的事情。 (另外,node: true 是不正确的,除非您正在编写一个旨在同时在 Node.js 和浏览器中工作的脚本。)
  • 是的,我更改了 .jshintrc 文件 - 问题中包含/包含一行的文件,指定 es6。解决方案中发布的 /*..*/ 提示只是从我的 js 文件顶部复制和粘贴的。两个警告都消失了。
猜你喜欢
  • 2015-11-29
  • 1970-01-01
  • 2012-02-15
  • 2015-01-22
  • 2016-08-30
  • 2012-06-07
  • 2015-05-29
  • 2016-12-15
相关资源
最近更新 更多