Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript console.log输出';功能<;结果的价值>';而不是'&书信电报;结果的价值>';_Javascript_Function_Google Chrome_Console - Fatal编程技术网

Javascript console.log输出';功能<;结果的价值>';而不是'&书信电报;结果的价值>';

Javascript console.log输出';功能<;结果的价值>';而不是'&书信电报;结果的价值>';,javascript,function,google-chrome,console,Javascript,Function,Google Chrome,Console,我正在阅读javascript手册,并注意到以下代码: //sum function sum(arg1) { var sum = arg1; function f(arg2) { sum += arg2; return f; }; f.valueOf = function () { return sum; }; f.toString = function () { return

我正在阅读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));
根据手册
控制台。日志应输出
功能的
值的结果

但它的输出

function 10
请解释一下这种行为

根据manual console.log,应输出函数值的结果

我不知道你在说什么“手册”,但一般来说,
console.log
不会对你输出的内容调用
valueOf
console.log
的实现在不同的JavaScript引擎中有所不同,但一般来说,它们试图提供比调用
valueOf
更有用的信息

如果要触发
valueOf
,则需要有意识地执行此操作,例如:

console.log(sum(1)(2)(3)(4).valueOf());
// ------------------------^^^^^^^^^^
或者(因为您的函数设计用于生成数字):

例如:

函数和(arg1){
var和=arg1;
函数f(arg2){
sum+=arg2;
返回f;
};
f、 valueOf=函数(){
回报金额;
};
f、 toString=函数(){
回报金额;
};
返回f;
}
console.log(sum(1)(2)(3)(4).valueOf());
// ------------------------^^^^^^^^^^
控制台日志(+sum(1)(2)(3)(4));
//-----------^

查看实际的浏览器控制台;Stack Snippets控制台与真正的浏览器控制台不同。
您是指输出中的单词function吗?它可能是控制台的beaviour。@Nina Scholz是的,我是关于这个行为的
,但它输出函数10
-不在我的浏览器中,+所有都正常工作,但我不确定我可以返回哪个对象来获得这个行为。你是从哪里想到在它的开头添加+符号的?你能把它联系起来或解释一下吗。谢谢:D@Semi-Friends+意味着投给number@Semi-Friends@gstackoverflow:对不起,我不知道你说的“但我不确定我可以返回哪个对象来获得这种行为”是什么意思。
console.log(+sum(1)(2)(3)(4));
// ---------^