# no-setter-return

禁止从设置器返回值

配置文件中的 "extends": "eslint:recommended" 属性启用了该规则

Setter 不能返回值。

虽然从 setter 返回值不会产生错误,但返回的值将被忽略。因此,从 setter 返回一个值要么是不必要的,要么是可能的错误,因为返回的值不能被使用。

# 规则详情

此规则不允许从 setter 中返回值,并在 setter 函数中报告 return 语句。

只允许没有值的 return,因为它是一个控制流语句。

此规则检查设置器:

  • 对象字面量。
  • 类声明和类表达式。
  • 全局对象的 Object.createObject.definePropertyObject.definePropertiesReflect.defineProperty 方法中的属性描述符。

此规则的错误代码示例:

/*eslint no-setter-return: "error"*/

var foo = {
    set a(value) {
        this.val = value;
        return value;
    }
};

class Foo {
    set a(value) {
        this.val = value * 2;
        return this.val;
    }
}

const Bar = class {
    static set a(value) {
        if (value < 0) {
            this.val = 0;
            return 0;
        }
        this.val = value;
    }
};

Object.defineProperty(foo, "bar", {
    set(value) {
        if (value < 0) {
            return false;
        }
        this.val = value;
    }
});

此规则的正确代码示例:

/*eslint no-setter-return: "error"*/

var foo = {
    set a(value) {
        this.val = value;
    }
};

class Foo {
    set a(value) {
        this.val = value * 2;
    }
}

const Bar = class {
    static set a(value) {
        if (value < 0) {
            this.val = 0;
            return;
        }
        this.val = value;
    }
};

Object.defineProperty(foo, "bar", {
    set(value) {
        if (value < 0) {
            throw new Error("Negative value.");
        }
        this.val = value;
    }
});
Last Updated: 5/13/2023, 8:55:38 PM