gpt4 book ai didi

javascript - console.log 输出 'function ' 而不是 ''

转载 作者:行者123 更新时间:2023-11-30 11:46:37 27 4
gpt4 key购买 nike

我正在阅读 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

请解释此行为。

最佳答案

According the manual console.log should output the result of valueOf function

我不知道你在说什么“手册”,但一般来说,console.log 不会调用 valueOf 关于你输出的内容。 console.log 的实现因 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.

关于javascript - console.log 输出 'function <valueOf result> ' 而不是 '<valueOf result>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40781446/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com