]> git.proxmox.com Git - pve-eslint.git/blob - eslint/docs/src/rules/no-setter-return.md
bump version to 8.41.0-3
[pve-eslint.git] / eslint / docs / src / rules / no-setter-return.md
1 ---
2 title: no-setter-return
3 rule_type: problem
4 related_rules:
5 - getter-return
6 further_reading:
7 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set
8 ---
9
10
11
12 Setters cannot return values.
13
14 While returning a value from a setter does not produce an error, the returned value is being ignored. Therefore, returning a value from a setter is either unnecessary or a possible error, since the returned value cannot be used.
15
16 ## Rule Details
17
18 This rule disallows returning values from setters and reports `return` statements in setter functions.
19
20 Only `return` without a value is allowed, as it's a control flow statement.
21
22 This rule checks setters in:
23
24 * Object literals.
25 * Class declarations and class expressions.
26 * Property descriptors in `Object.create`, `Object.defineProperty`, `Object.defineProperties`, and `Reflect.defineProperty` methods of the global objects.
27
28 Examples of **incorrect** code for this rule:
29
30 ::: incorrect
31
32 ```js
33 /*eslint no-setter-return: "error"*/
34
35 var foo = {
36 set a(value) {
37 this.val = value;
38 return value;
39 }
40 };
41
42 class Foo {
43 set a(value) {
44 this.val = value * 2;
45 return this.val;
46 }
47 }
48
49 const Bar = class {
50 static set a(value) {
51 if (value < 0) {
52 this.val = 0;
53 return 0;
54 }
55 this.val = value;
56 }
57 };
58
59 Object.defineProperty(foo, "bar", {
60 set(value) {
61 if (value < 0) {
62 return false;
63 }
64 this.val = value;
65 }
66 });
67 ```
68
69 :::
70
71 Examples of **correct** code for this rule:
72
73 ::: correct
74
75 ```js
76 /*eslint no-setter-return: "error"*/
77
78 var foo = {
79 set a(value) {
80 this.val = value;
81 }
82 };
83
84 class Foo {
85 set a(value) {
86 this.val = value * 2;
87 }
88 }
89
90 const Bar = class {
91 static set a(value) {
92 if (value < 0) {
93 this.val = 0;
94 return;
95 }
96 this.val = value;
97 }
98 };
99
100 Object.defineProperty(foo, "bar", {
101 set(value) {
102 if (value < 0) {
103 throw new Error("Negative value.");
104 }
105 this.val = value;
106 }
107 });
108 ```
109
110 :::