小编Wac*_*per的帖子

Javascript - 在setter中返回什么?

我有以下代码:

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;
    }
});
Run Code Online (Sandbox Code Playgroud)

在setter函数中,我在返回之前将_value递增1.所以,如果我做oa = 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
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,为什么它会返回5而不是6?我希望这不是因为我在代码中犯了一些愚蠢的错误.

javascript expression variable-assignment getter-setter

15
推荐指数
2
解决办法
2176
查看次数