javascript - return 语句在 setter 中做什么?

标签 javascript expression variable-assignment getter-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;
    }
});

在 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/

相关文章:

python - 如何将 **kwargs 参数传递给相关的包装函数?

javascript - 使用 Bootstrap 动态添加和删除字段

javascript - 创建新的类实例并将参数应用为数组

javascript - 单个字符串上的多个正则表达式

xpath - 有没有办法正确连接三个任意 XPath 表达式以生成新的有效 XPath 表达式?

pointers - Golang : help understanding pointers, 分配和意外行为

javascript - 有没有办法让 flexbox 等高列与具有不同字体大小和字体系列的文本的基线字体对齐?

javascript - 如何确定文本文件下载的底层URL

c++ - 'return' 之前的预期主表达式

Ruby 变量赋值