禁用“使用 use strict 的函数形式”,但保留“Missing 'use strict' statement”警告

Posted

技术标签:

【中文标题】禁用“使用 use strict 的函数形式”,但保留“Missing \'use strict\' statement”警告【英文标题】:Disable "use the function form of use strict" but keep the "Missing 'use strict' statement" warning禁用“使用 use strict 的函数形式”,但保留“Missing 'use strict' statement”警告 【发布时间】:2012-02-15 17:47:23 【问题描述】:

我正在使用 jslint 来验证我的代码。 我在所有页面上都有“使用严格”。 如何禁用消息“使用'use strict'的函数形式”但保留“缺少'use strict'语句”警告,这样我就不会忘记将它放在新文件上?

谢谢

【问题讨论】:

【参考方案1】:

如果不更改驱动 jslint 的 javascript 文件,则无法完成。

函数形式对我来说是一种胡思乱想的工作实践,因此不能强加于人。

不是每个人都需要合并和缩小,但即使我这样做了,我也会合并应用相同规则的代码,因此文件语句就足够了。

虽然 jshint 具有您所需要的功能。最新的 jslint 现在比 jshint 更先进,可以发现更多弱点并处理更复杂的代码。我喜欢 jshint,但它跟不上 jslint。

【讨论】:

【参考方案2】:

根据Crockford's post,您需要将所有内容包装在一个函数中...

(function () 
    "use strict";
    // the rest of your file goes here...
());

您也可以改用jshint,它有一个“globalstrict”选项,可以完全按照您的要求完成,而无需将所有内容包装在一个函数中

【讨论】:

“如果一个带有“use strict”的文件;前导附加了草率的代码,草率的代码将被视为严格的,并且可能会失败。这是你想要把它放在一个函数中的时候。不是所有的时间。我所有的代码都很严格,所以对我没有用。 您是否按照我的建议检查了 jshint?【参考方案3】:

我为此找到的解决方案是使用“use strict”创建一个单行文件;没有别的了

在你的连接包中创建第一个文件,将它添加到 jslint 的排除列表中,切换 sloppy=true pragma

不拾取草率代码可能会有一些副作用,但我对文档的理解是它只是检查“使用严格”;线

【讨论】:

【参考方案4】:

这是一个 hack 来抑制“使用 'use strict' 的函数形式。”

    $ uname -a
    Darwin 13.0.0 Darwin Kernel Version 13.0.0

    找出你的 jslint 分布在哪里。

    $ which jslint
    /usr/local/bin/jslint
    $ ls -l /usr/local/bin/jslint
    lrwxr-xr-x  1 root  admin  40 11 Feb  2013 /usr/local/bin/jslint -> ../lib/node_modules/jslint/bin/jslint.js
    $ cd /usr/local/lib/node_modules/jslint/
    $ ls
    LICENSE     README.md   lib     package.json
    Makefile    bin     node_modules
    

    注释掉警告。

    $ sudo vim lib/jslint.js
    
    search for 'function_strict'
    comment out the line 'warn('function_strict');'
    note: the exact line might vary on some versions but just comment it out.
    

    如果它不起作用,您可能安装了多个版本的 jslint 并且没有编辑正确的版本。

    sudo find / -name jslint.js
    

【讨论】:

以上是关于禁用“使用 use strict 的函数形式”,但保留“Missing 'use strict' statement”警告的主要内容,如果未能解决你的问题,请参考以下文章

Android EditText禁用编辑但允许滚动

在 uitableview 中禁用反弹也会禁用 iOS 5 上的滚动,但不会禁用 iOS4

禁用放大 UIWebView 但保留其他用户交互

为啥我可以禁用但不能启用可丢弃功能?

我禁用了 IE 增强的安全性,但 IE 不工作

按钮已禁用但看起来很活跃