function Calc(X0,max)
{
max = max || 5;//求解此句含义
}
function CalBBA()
{
    XO=3;
    Calc(XO);//此处调用未传max参数,求解
}
个人理解:未传的max = undifined,max = max || 5;后,max = ????

解决方案 »

  1.   

    未传的max = undifined,max = max || 5;后,max = 5
      

  2.   

    js是松类型滴,你可以传一个参数,也可以传两个,三个,你只传一个参数的时候max参数就变成undefinded, max=max||5就是为了防止undefinded情况的:max=max取不到值?那就max=5咯,字面理解就是max=max 或者5
      

  3.   

    相当于max = (max ? max : 5)
      

  4.   

    max = max || 5;相当于
    max = (max ? max : 5)max true 返回 max 否则 = 默认值5undefinded 0 false  都是 false
      

  5.   

    大家好,多谢大家的热心帮助,但是按大家的理解,我改成了C#代码后,运行结果不正确啊,怎么回事,传参的时候,max = max(参数),没传参的时候,max = 5,我改成C#了,然后,结果不一致。function calBBA(P0, V0, V, bonus, dt, t, y, b, max) {
                        max = max || 5;
                        //累加
                        function calc(P, P0, V0, V, bonus, dt, t, y, b, max) {
                            return (P0 * V0 + Math.max(max, P0 * V0 * y) + (b != 0 ? Math.max(1, V0 * b / 1000) : 0)
    + P * V * t + Math.max(max, P * V * y) + (b != 0 ? Math.max(1, V * b / 1000) : 0) - bonus + dt
    ) / P;
                        }
     
                        //初始参数
                        var UP = P0 * 50, DOWN = 0.001, limit = 0.0001, X0 = (UP - DOWN) / 2, Vt = 0;
     
                        do {
                            Vt = calc(X0, P0, V0, V, bonus, dt, t, y, b, max);
                            //取中值
                            if (Vt < V) {
                                UP = X0;
                                X0 = (UP + DOWN) / 2;
                            } else {
                                DOWN = X0;
                                X0 = (UP + DOWN) / 2;
                            }
                        } while ((Math.abs(Vt - V) > 0.001) && (Math.abs(UP - DOWN) > limit))
     
                        return X0;
                    }
                    function calBBB(P0, V0, V, bonus, dt, t, y, b, max) {
                        max = max || 5;
                        //累加
                        function calc(P, P0, V0, V, bonus, dt, t, y, b, max) {
                            return (P0 * V0 + Math.max(max, P0 * V0 * y) + (b != 0 ? Math.max(1, P0 * V0 * b) : 0)
    + P * V * t + Math.max(max, P * V * y) + (b != 0 ? Math.max(1, P * V * b) : 0) - bonus + dt
    ) / P;
                        }
     
                        //初始参数
                        var UP = P0 * 50, DOWN = 0.001, limit = 0.0001, X0 = (UP - DOWN) / 2, Vt = 0;
     
                        do {
                            Vt = calc(X0, P0, V0, V, bonus, dt, t, y, b, max);
                            //取中值
                            if (Vt < V) {
                                UP = X0;
                                X0 = (UP + DOWN) / 2;
                            } else {
                                DOWN = X0;
                                X0 = (UP + DOWN) / 2;
                            }
                        } while ((Math.abs(Vt - V) > 0.001) && (Math.abs(UP - DOWN) > limit))
     
                        return X0;
                    }
    调用代码 calList[1][0] = function () {
                        result.bbPrice = calBBA(buyPrice, buyAmt, allAmt, gainMoneyAmt, 0, stampTaxRate, brokerRate, transferFeeRate);
                    };
                    calList[1][2] = function () {
                        result.bbPrice = calBBA(buyPrice, buyAmt, allAmt, gainMoneyAmt, 0, stampTaxRate, brokerRate, transferFeeRate / 100);
                    };
                    calList[1][1] = function () {
     
                        result.bbPrice = calBBB(buyPrice, buyAmt, allAmt, gainMoneyAmt, 0, stampTaxRate, brokerRate, transferFeeRate / 100, 1);
                    }
                    calList[1][3] = function () {
     
                        result.bbPrice = calBBB(buyPrice, buyAmt, allAmt, gainMoneyAmt, 0, stampTaxRate, brokerRate, transferFeeRate / 100);
                    }
      

  6.   

    max = max || 5;换成
    if(!max) max=5;试试