这个:

% node
> var o = {valueOf: function() { return 5; } };
undefined
> o += 1;
6
> o
6
> o += 1;
7
> o
7


如果o总是返回5,为什么valueOf值增加?

最佳答案

从问题中看到的o引用对象的情况开始:

var o = {valueOf: function() { return 5; } };


然后在表达式中

o += 1;


发生的是:


o的值通过调用.valueOf()以数字形式获得
该值被添加到1,从而得到6
该结果分配给变量o


因此,曾经包含对对象的引用的变量o现在包含一个数字。

关于javascript - valueOf函数设置为始终返回相同的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40438491/

10-12 01:10