繁体   English   中英

console.log输出&#39;功能 <valueOf result> &#39; 代替 &#39; <valueOf result> “

[英]console.log outputs 'function <valueOf result> ' instead of '<valueOf result>'

我正在阅读javascript手册,我有以下代码:

//sum
function sum(arg1) {
    var sum = arg1;

    function f(arg2) {
        sum += arg2;
        return f;
    };

    f.valueOf = function () {
        return sum;
    };

    f.toString = function () {
        return sum;
    };

    return f;
}

我这样执行:

console.log(sum(1)(2)(3)(4));

根据手动console.log应该输出valueOf函数的结果

但它输出

function 10

请解释一下这种行为。

根据手动console.log应该输出valueOf函数的结果

我不知道你在说什么“手动”,但一般来说, console.log 不会在你输出的内容上调用valueOf console.log的实现从JavaScript引擎到JavaScript引擎各不相同,但一般来说,它们会尝试为您提供比调用valueOf更有用的信息。

如果你想触发valueOf ,你需要有意识地这样做,例如:

console.log(sum(1)(2)(3)(4).valueOf());
// ------------------------^^^^^^^^^^

或(因为您的功能旨在产生一个数字):

console.log(+sum(1)(2)(3)(4));
// ---------^

例:

 function sum(arg1) { var sum = arg1; function f(arg2) { sum += arg2; return f; }; f.valueOf = function () { return sum; }; f.toString = function () { return sum; }; return f; } console.log(sum(1)(2)(3)(4).valueOf()); // ------------------------^^^^^^^^^^ console.log(+sum(1)(2)(3)(4)); // ---------^ 
 Look in the actual browser console; the Stack Snippets console doesn't quite do what the real browser console does. 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM