Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.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如何将值返回给调用函数_Javascript_Function_Syntax_Return - Fatal编程技术网

Javascript如何将值返回给调用函数

Javascript如何将值返回给调用函数,javascript,function,syntax,return,Javascript,Function,Syntax,Return,对于这个Javascript示例,请有人从一个非常基本的层面解释为什么这不起作用,以及如何正确地创建另一个(不是嵌套的)函数,将值传递回调用它的函数 function function1() { var x = 5; function2(x); console.log(y); function3(y); console.log(z); } function function2(y) { var y = y + 5; return

对于这个Javascript示例,请有人从一个非常基本的层面解释为什么这不起作用,以及如何正确地创建另一个(不是嵌套的)函数,将值传递回调用它的函数

function function1() {
    var x = 5;

    function2(x);
    console.log(y);

    function3(y);
    console.log(z);
}   

function function2(y) {
    var y = y + 5;
    return y;
}

function function3(z) {
    var z = z + 5;
    return z;
}
即使在主函数中声明它们,也不起作用:

function function1() {
    var x = 5;

    var y = function2(x);
    console.log(y);

    var z = function3(y);
    console.log(z);
当使用全局变量时,没有区别。我还尝试了以下其他示例,其中创建了一个全局对象来向其中写入全局变量,但在“未定义”的情况下也总是失败:

我想我不明白一些非常基本的概念。请放点光。我可以看到子例程正在运行并执行它们需要执行的操作,但它们从不将最终值传递回调用该函数的函数

后续问题

我请求一个API,在那里我得到一个室友。接下来,我尝试调用一个函数,该函数执行另一个API调用,以将roomId转换为roomName。我想将roomName传递回另一个函数,以便在那里使用它。我已经尝试了很多方法,直到现在都无法传回变量。正如前面的示例所示,它必须与其他内容(数组/对象、字符串/nostring/…)有关


因此,首先需要一个函数调用,在该调用中声明变量并为其指定特定值:

function invoke() {
    var x, y = 0;

    x = h(21);
    y = g(42);

    console.log(x);
    console.log(y);
}
然后创建用于计算的函数:

function h(n) {
    return n + 5;
}

function g(n) {
    return n - 5;
}
现在,您只需调用函数invoke即可执行它:

invoke();
如果还要打印计算结果,请添加:

function invoke2(x,y) {
    console.log(h(x));
    console.log(g(y));
}
invoke2(21,42);

调用函数时,不要使用
函数function2(x)
。只需
function2(x)
function2(x)这是无效的javasacript。我猜你得到了一个意想不到的记号错误。要定义嵌套函数,您必须像编写
function function2(){/*do something*/}
一样编写其块。要调用函数,请放弃
函数
标记。很抱歉,示例不正确。我更改了示例,因为我只调用了函数。它不起作用。我希望这能帮助你!
invoke();
function invoke2(x,y) {
    console.log(h(x));
    console.log(g(y));
}
invoke2(21,42);