【问题标题】:Jslint strict violations errorsJslint 严格违规错误
【发布时间】:2013-08-10 19:41:55
【问题描述】:

我正要尝试在 js 中编写一些 OOP 代码,没什么特别想看看它是如何工作的。 我在网上阅读了一些文档,但是代码在 jslint 中给了我错误。 我从未使用过 jslint,所以我不确定错误消息的重要性,希望你们能提供帮助。

function mainClass(arg1, arg2) {

"use strict";

this.property1 = arg1;
this.property2 = arg2;

this.printClass = function printClass() {

    return this.property1 + " " + this.property2;

}}

这是一个足够简单的 js 类,但我得到了一些错误,错误是:

ln5 严格违反。 this.property1 = arg1;

ln6 严格违反。 this.property2 = arg2;

ln8 严格违反。 this.printClass = function printClass() {

ln12 应为 ';'而是看到了“}”。

显然错误是我在全球范围内使用它,正如我在其他一些帖子中所读到的那样,但我不知道我应该如何解决它。

这样写js类不正确吗?

更新!

var mainClass = function(arg1, arg2) {
'use strict';

this.property1 = arg1;
this.property2 = arg2;

this.printClass = function printClass() {
    return this.property1 + ' ' + this.property2;
};};

我将代码更新为上面的代码,它就像其他代码一样工作,我应该注意声明这样的类和上面的方式有什么不同吗?这个也验证了。

【问题讨论】:

    标签: javascript oop jslint


    【解决方案1】:

    是的,JSHint 对东西有点严格。但是您的代码很好,当您正确缩进时它会完美验证。此外,您在函数声明之一的末尾忘记了;

    var foo = function (arg1, arg2) {
        'use strict';
    
        this.property1 = arg1;
        this.property2 = arg2;
    
        this.printClass = function printClass() {
            return this.property1 + ' ' + this.property2;
        };
    };
    

    或者使用validthis flag,当代码在严格模式下运行并且您在非构造函数中使用它时,它抑制关于可能的严格违规的警告

    【讨论】:

    • 不错的 ;愚蠢的错误,但即使有适当的缩进,前 3 个错误仍然存​​在。
    • @BjörnHjorth 我刚刚意识到您使用的是 JSHint 而不是 JSLint。这应该可以验证,尽管您可能会收到 'foo' is defined but never used. 错误。
    • 我正在使用内置 JSLint 的 Adob​​e Edge Code,我不知道 JSHint 是什么。
    • 我用新代码更新了第一篇文章,并且一个有效,那和另一个有什么区别?
    • 两个声明几乎是同义词(阅读dustindiaz.com/javascript-function-declaration-ambiguity),但对于 var “速记”版本,JSHint 不会引发警告。
    猜你喜欢
    • 2013-04-05
    • 2013-07-20
    • 2011-01-30
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    相关资源
    最近更新 更多