我有以下代码:
var o = {};
o.a = 1;
var _value = 1;
Object.defineProperty(o,"a",{
set: function(value){
_value = value + 1;
console.log("log: ", value, _value);
return _value;
},
get: function(){
return _value;
}
});
在 setter 方法中,我在返回之前将 _value
递增 1。因此,如果我设置 o.a = 5
,我希望控制台打印 6
(尽管我意识到通常从 setter 返回值没有意义)。但是,如以下代码片段所示,控制台打印 5
:
> o.a = 5;
log: 5 6 // from console.log;
5 // return; why does it == value and not value + 1?
> o.a;
6
> var i = o.a = 5;
> i;
5
> o.a;
6
所以我的问题是为什么它返回 5
而不是 6
?
我希望这不是因为我在代码中犯了一些愚蠢的错误。
最佳答案
您不能从属性 setter 返回任何内容,而只是获取赋值的值(5
因为您赋值了 5
)。
what does return in a setter do?
没有。最好删除那个 return
语句。充其量它被忽略。
关于javascript - return 语句在 setter 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26582056/