second if statement not working
在下面的程序中,我使用3个if条件,但是中间的if语句不起作用,最后一个if语句起作用,当我再次将第三个if语句更改为第二个语句时,第二个语句不能正常工作。第三,如果声明有效
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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; } } |
空字符串a在数字上下文中转换为零。如果不需要,你需要一个明确的检查,比如
1 2 3 | if (input.value === '') { return; } |
if(discount != null)
假设折扣变量为空字符串。你对结果有什么看法?
1 | if(""!=null) |
将是
1 | if("someData"!=null) |
它将再次成为
我不怪你。在这种情况下,javascript有一些神奇的功能。
在javascript中,有很多逻辑操作可以表示为if条件的
1 2 3 | if(""){//code here} if(null){//code here} if(0){//code here} |
开发人员不应比较两种不同的类型,如
您不需要在任何
1 2 3 4 5 6 7 8 9 10 11 | 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 } |
1 | if(discount != null) |
折扣将为空字符串,并且不为空检查:
1 | if(discount !=="") |