从函数调用return以用于另一个函数的变量?javascript

kmbjn2e3  于 2023-01-01  发布在  Java
关注(0)|答案(1)|浏览(143)

我正在做一个使用循环和函数的购物模拟器。当用户通过promt设置一个数量时,这个函数得到验证,并给我一个数字。我想使用返回来计算与购买的产品数量相关的分期付款费用,但无法得到函数的工作。它将值视为0或停止工作。有什么想法吗?
这是购物功能

const comprarEquipos = () => {  
    // Flujo principal
    let equipo = '';
    let cantidad = 0;
    let precio = 0;
    let totalPedido = 0;
    let seguirComprando = false;

    
do {
    equipo = prompt("¿Que minisplit buscas:? inverter, convencional o alta eficiencia","Ej. convencional").toLowerCase();
    cantidad = parseInt(prompt ("¿Cuantos equipos necesitas?", "Ej. 2"));

    const cantidadComprobada = comprobarCantidad(cantidad) 
    switch (equipo) { 
        case "convencional":
            precio = 4900;
            break;
        case "inverter":
            precio = 7500;
            break;
        case "alta Eficiencia":
            precio = 12000;
            break;
        default:
        alert("Ingresa una opcion de producto valida");
            precio = 0;
            cantidad = 0;
            }

    totalPedido += precio*cantidadComprobada;

    seguirComprando = confirm("¿Deseas seguir comprando?"); 
    }  while (seguirComprando)

    const totalConInstalacion = calcularInstalacion(totalPedido);
    
    return totalConInstalacion;
};

这是我用来验证数量的函数

const comprobarCantidad = (cantidad) => { 
    while (Number.isNaN(cantidad) || cantidad === 0) { 
        if (cantidad !== 0) {
            alert("Debes especificar una cantidad.")
        } else {
            alert("Debes pedir una cantidad superior a 0.")
        }
        cantidad = parseInt(prompt("¿Cuantos equipos necesitas?", "Ej. 2"));
    }

    return cantidad; 
}

这是计算分期付款费用的函数,但似乎没有得到正确的数量

const calcularInstalacion = (totalPedido) => { 
    let cantidadMinisplits = comprobarCantidad(cantidad);
    let solicitaEnvio = confirm("¿Necesitas instalacion"); // 2.1 Aqui le preguntaremos al usuario si quiere envio y ese valor se aloja en la variante solicitaEnvio como true si da OK
    
    if (solicitaEnvio && cantidadMinisplits >= 7) {
        totalPedido = cantidadMinisplits*600;
        alert("Por "+cantidadMinisplits+" equipos el costo de instalación es $"+totalPedido);
    } else if (solicitaEnvio && cantidadMinisplits <= 6 && cantidadMinisplits !== 0) {
        totalPedido = cantidad*1100;
        alert("Por "+cantidadMinisplits+" equipos el costo de instalación es $");
    } else {
        alert("No se cobrara servicio de instalación")
    }

    return totalPedido;

}

但是要求确认安装的提示根本没有出现。我做错了什么?我怎么不能让它工作呢?
如果将值从candadMinisplit更改为一个数字,函数将正常工作

const calcularInstalacion = (totalPedido) => { 
    let cantidadMinisplits = comprobarCantidad(cantidad);
    let solicitaEnvio = confirm("¿Necesitas instalacion"); // 2.1 Aqui le preguntaremos al usuario si quiere envio y ese valor se aloja en la variante solicitaEnvio como true si da OK
    
    if (solicitaEnvio && cantidadMinisplits >= 7) {
        totalPedido = cantidadMinisplits*600;
        alert("Por "+cantidadMinisplits+" equipos el costo de instalación es $"+totalPedido);
    } else if (solicitaEnvio && cantidadMinisplits <= 6 && cantidadMinisplits !== 0) {
        totalPedido = cantidad*1100;
        alert("Por "+cantidadMinisplits+" equipos el costo de instalación es $");
    } else {
        alert("No se cobrara servicio de instalación")
    }

    return totalPedido;

}

但调用验证函数不起作用

ncecgwcz

ncecgwcz1#

正如Fiddling Away所建议的那样,这是一个范围问题。我也使用了这个建议来改进模拟器。更改cantidad确实解决了这个问题,谢谢你,抱歉没有翻译变量名,我将在以后的问题中这样做。

相关问题