第二个如果声明不起作用

时间:2018-04-16 11:59:45

标签: javascript

在下面的程序中,我使用3 if条件,但if中间的if语句不起作用,last if if语句正常,当我将第三个if语句更改为第二个语句时,第二个语句不能正常工作。 第三,if语句正常

function calculate() {
    var quantity = document.getElementById("quantity").value;
    var price = document.getElementById("price").value;
    var discount = document.getElementById("discount").value;
    var tax = document.getElementById("tax").value;

    if((quantity && price ) != null) {
        amount = quantity * price;
        document.getElementById("amount").value = amount;
    } else {
        alert("price & tax required");
    }

    if(discount != null) {
        var discount_amount = (quantity*price*discount)/100;
        amount = (quantity*price) - discount_amount;
        document.getElementById("amount").value = amount;
    } else {
        document.getElementById("amount").value = quantity * price;
    }

    if(tax != null) {
        var tax_amount = (quantity*price*tax)/100;
        amount = (quantity*price) + tax_amount;
        document.getElementById("amount").value = amount;
    } else {
        document.getElementById("amount").value = quantity * price;
    }
}

4 个答案:

答案 0 :(得分:2)

input.value返回一个永远不会null的字符串,但它可以是一个空字符串,例如''

在数字上下文中将空字符串a转换为零。如果不需要,则需要进行明确检查,例如

if (input.value === '') {
    return;
}

答案 1 :(得分:0)

if(discount != null)

折扣将是空字符串而不是空检查:

 if(discount !== "")

答案 2 :(得分:0)

您不需要在任何if测试中明确检查null,因为零值和未定义

if (quantity && price) {
   // only want to come in here for non-zero values of both
}

if (discount) {
   // only interested in the discount for non-zero values
}

if (tax) {
  // only interested in non-zero values of tax
}

答案 3 :(得分:0)

  

if(discount!= null)

假设discount变量是空字符串。你对结果有什么看法?

if(""!=null)

它将是true 如果您的字符串包含一些数据

,该怎么办?
if("someData"!=null)

它将再次true

我不怪你。 Javascript在这种情况下有一些神奇的行为。

在javascript中,有很多逻辑操作可以表示为false if条件。在代码下面,所有if语句都返回false

if(""){//code here}
if(null){//code here}
if(0){//code here}

开发者不应该比较两种不同的类型,例如nullstring。 为了以防万一,我建议你避免双等号==。使用三元组===它是类型敏感的。 见here