JavaScript计算

JavaScript计算,javascript,Javascript,这是我的代码的更新版本。我只能在浏览器的控制台中看到p//pay rate和m//markup%的值,它们没有显示在LoanaData表单的指定字段中 var b, p, m, pmp, pm, pb, fp, misc, wc, tax, sui, o, fp, misc, t; function calculate1(){ wc = document.set.wc.value; // workers comp % tax = document.set.tax.value; /

这是我的代码的更新版本。我只能在浏览器的控制台中看到p//pay rate和m//markup%的值,它们没有显示在LoanaData表单的指定字段中

var b, p, m, pmp, pm, pb, fp, misc, wc, tax, sui, o, fp, misc, t;
function calculate1(){
    wc = document.set.wc.value; // workers comp %
    tax = document.set.tax.value; // taxes %
    sui = document.set.sui.value; // sui %
    o = document.set.o.value; // other expenses %
    fp =document.set.fp.value; // fund and processing %
    misc = document.set.misc.value; // Misc expenses %
    pb = (wc+tax+sui+o)/100*b; // variable used to calculate profit margin
    document.set.pb.value = pb;
    t = document.set.t.value; // target profit margin %
}
function calculate() {
    b = document.loandata.b.value; //bill rate
    b = (b=="")?(((m*p)/ 100) + p):b; 
    p = document.loandata.p.value; //pay rate 
    m = document.loandata.m.value; // markup % 
    m = (m=="")?((b-p)/p* 100):m;
    pm = (b-((pb*p)/100+(b*fp)/100+(b*misc)/100+p)); // profit margin calculation
    pm = Math.round(pm).toFixed(2);
    document.loandata.pm.value = pm;
    pmp = pm/b*100;  // profit margin % calc 
    pmp = Math.round(pmp).toFixed(2); // profit margin %
    document.loandata.pmp.value = pmp;
}

-1感谢所有这些邪恶且毫无意义的回避。+1,@Kolink,感谢他指出了回避的滥用。不管怎样,到底是什么?所有这些缩写的变量名、模棱两可的函数名、缺少注释、严重缺少分号、不接受参数而自己获取参数的函数、缺少var关键字、不必要的变量赋值等等。WTF?您甚至没有指出变量的含义,因为您将它们称为模棱两可的名称。更清楚的是,Kolink说eval是不必要的,因为您可以在所有其他计算中使用wc=document.set.wc.value等等@泰勒·克朗普顿——除了缺少分号之外,我同意你所说的一切:分号在JS中大部分是可选的。就我个人而言,我更喜欢一直使用它们,但是如果没有它们,所显示的代码是完全有效的。尽管我想我还是有点同意,因为代码在几个地方使用了它们,而且我认为应该是一致的:要么只在必要时使用它们,要么一直使用它们…@user1078259请参阅此处,以获得有关eval不好的原因的良好解释:该页面/站点的其余部分也很好,并可能帮助您提高Javascript技能。特别是,我要强调的是,您应该尽量避免在行的末尾省略分号,它们是语言的一个必要部分,如果您不这样做,编译器将尝试插入,而且它通常在猜测分号应该放在哪里时做得不好。@GregL-我更喜欢一直使用分号,但是如果你不考虑它们,编译器不会猜测它们应该去哪里,它遵循一套明确定义且相对容易使用的规则,关于何时以及何时不为你插入它们。是否有特别的原因让你显式检查m==未定义,而不仅仅是m?m的公式:m?m?测试m在javascript中是否为falsy-不一定等于undefined。看,m可能是零。是的,我现在明白了。说得好。你知道m=='undefined'和m==undefined'之间的类型是否有实际的区别吗?很好的回答。如果m为null,那么m==undefined实际上是真的,我想。。。。typeof和strict equals可能是最绝对安全的方式。JS该死的强制行为会引起多少争论和混乱,这让我感到惊讶。但通过这样的网站和对话,我们都可以少一点困惑。
 m = (m==undefined)?(formula for m):m;
 p = (p==undefined)?(formula for p):p;