这个JavaScript代码是怎么回事?

这个JavaScript代码是怎么回事?,javascript,Javascript,抱歉,我是编程新手,因此无法提出更具体的问题。我发现这段代码非常混乱。我正在学习回调 函数添加(x,y,回调){ 回调(x+y) } 函数减法(x,y,回调){ 回调(x-y); } 函数乘法(x,y,回调){ 回调(x*y); } 函数计算(x,回调){ 回调(x); } 计算(5,(n)=>{ 加上(n,10,(n)=>{ 减去(n,2,(n)=>{ 乘(n,5,(n)=>{ console.log(n);//65 }); }); }); });这是一个JS回调示例: 在JS中,就像一个值

抱歉,我是编程新手,因此无法提出更具体的问题。我发现这段代码非常混乱。我正在学习回调

函数添加(x,y,回调){
回调(x+y)
}
函数减法(x,y,回调){
回调(x-y);
}
函数乘法(x,y,回调){
回调(x*y);
}
函数计算(x,回调){
回调(x);
}
计算(5,(n)=>{
加上(n,10,(n)=>{
减去(n,2,(n)=>{
乘(n,5,(n)=>{
console.log(n);//65
});
});
});

});这是一个JS回调示例: 在JS中,就像一个值一样,可以将一个函数传递给另一个函数

所以,如果你想简化这里发生的事情,在调用部分-

var calculateVal=calculate(5);//结果是5
var addedVal=add(calculateVal,10);//结果是15
var subtractVal=减法(加法,2);//结果是13
var multiplyVal=乘(减去VAL,5);//结果为65;你的结局

基本上,这个脚本所做的就是以下((5+10)-2)*5。返回65的和。它只是通过大量使用回调来实现这一点

所有函数都有一个回调函数,这意味着如果定义了另一个函数,则每个函数都可以调用该函数,。旁注:否则它会给出一个错误

function subtract(x, y, callback) {
  callback(x - y);
}

    
此函数包含三个值: x等于一个数字 y等于x将被减去的数字 callback=要在末尾运行的函数

让我们运行该函数,并将一个匿名函数放入console.log

subtract(15, 2, function (x) {
  console.log(x);
  // x = 13
});
让我们通过两次调用为同一函数添加另一层

subtract(15, 2, function (x) {
  subtract(x, 2, function (x) {
    console.log(x);
    // x = 11
  });
});

这就是一切的工作原理,只是嵌套函数使基础数学变得复杂。

您至少需要向我们解释一下,到底是什么让您难以理解这里的内容。请去读。我们在这里不是为了让您删除代码,然后期望我们解释每一行代码的作用。首先,您需要更精确一点。这是一个显示回调的奇怪示例。这些都应该是常规的返回函数。@JavaScript似乎是一个简单的返回函数示例。您总是有一个“continuation”函数,当前函数在完成后必须调用该函数。因此,CPS为您提供了一个执行链,其中每个链接只知道如何做一件事,然后传递结果,而不需要知道计算的下一部分是什么。如果您已经看到它是一个CPS示例,其中
next
函数是延续。@VLAZ:在我看来更像是一个指针列表示例(next,before,nil)。但是,是的,我不介意。对我来说就像一个奇怪的用例。@JavaScript我不知道这与指针有什么关系。这个例子在技术上是错误的,因为单个函数没有返回值。然而,这是一个很好的崩溃。缺少最终输出/日志。是的,同意这不是实际情况,这只是一个替代的简化视图,用于查看问题中提到的复杂回调示例。@Lain您可以删除该片段。我现在已经这样做了,我鼓励你也编辑,当你可以立即使一篇文章更好。如果你能做出明确的改进,通常不需要等待。