Javascript console.log输出';功能<;结果的价值>';而不是'&书信电报;结果的价值>';
我正在阅读javascript手册,并注意到以下代码: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
//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));
// ---------^