【问题标题】:JSLint Expected 'set' and instead saw ''JSLint 预期“设置”,而是看到“”
【发布时间】:2023-10-12 11:06:02
【问题描述】:

JS Linting以下代码:

/*jslint 
browser: true,
es5: true,
*/

var VCA = {
    get enable () {
        'use strict';
        return 0;
    },
    set enable (value) {
        'use strict';
        console.log(value);
    }
};

导致错误:

Problem at line 11 character 9: Expected 'set' and instead saw ''.

set enable (value) {

我不明白该怎么做才能正确看到'set'?!

我知道__defineGetter__ 语法,但我真的很想使用上面的样式。

有人知道这个错误的更多信息吗?

【问题讨论】:

  • 我认为这个问题更适合 Douglas 的电子邮件收件箱。
  • @Tomalak - 我不知道我的系统税是否错误。将其作为错误报告提交。
  • 是否?你的意思是而不是如果?
  • 是的,没错 :) 讨厌宠物!
  • 哈,好的。我能哄你解释一下吗? :)

标签: javascript jslint


【解决方案1】:

这似乎是 JSLint 中的一个问题。我无法在 JSLint 中验证任何获取/设置方案。您的语法似乎是正确的,并且符合 Douglas 的 initial post 关于 getter setter 验证的内容。


编辑:这验证很好,所以可能是一种解决方法:-)

var myObject = {};

(function () {
    var myProp = 'myDefault';
    Object.defineProperty(myObject, 'myProp', 
        {
            enumerable:     false,
            configurable:   true,
            get: function () {
                return myProp;
            },
            set: function (value) {
                myProp = value + ' lala';
            }
        });
}());

【讨论】:

  • Opera 不支持 Object.defineProperty 和 IE 不支持 Matt 的示例语法,所以如果你想要兼容性,你必须同时使用两者。
  • Mweh,大多数在严格模式下使用 ES5 的人并没有在 Web 环境中使用它。
  • 我只有“user strict”,因为 JS Lint 默认为 ES5。
  • 你可以使用sloppy: true标志:-)
【解决方案2】:

只是为了好玩,大约七年后,我将记录下面的 lints,如果只是为了提供一个在 2018 年在 JSLint 中使用 getter 和 setter 的示例。

/*jslint getset, devel */

var VCA = {
    get enable() {
        "use strict";
        return 0;
    },
    set enable(value) {
        "use strict";
        console.log(value);
    }
};

【讨论】: