首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 簡易計算器 Bug 修復:變量聲明缺失導致 IE 下邏輯錯誤

     編輯:程式設計綜合問答

問題代碼片段

res = 0
if(oper == "+"){ res = num1 + num2 } ...
document.getElementById("res").value = res

根因分析

變量 res 未用 var/let/const 聲明,成為全局變量。頁面中存在 <input id="res">,IE 下全局變量 res 被 DOM 元素同名覆蓋,導致賦值失效、計算結果異常。

修正代碼

function jiSuan(){
    var num1 = parseFloat(document.getElementById("num1").value) || 0;
    var num2 = parseFloat(document.getElementById("num2").value) || 0;
    var oper = document.getElementById("oper").value;
    var res = 0;  // 關鍵:局部聲明
    switch(oper){
        case "+": res = num1 + num2; break;
        case "-": res = num1 - num2; break;
        case "*": res = num1 * num2; break;
        case "/": res = num2 !== 0 ? num1 / num2 : "除數不能為零"; break;
        case "%": res = num1 % num2; break;
        default:  res = "無法識別運算符";
    }
    document.getElementById("res").value = res;
}

最佳實踐補充

  • 嚴格模式:腳本頂部加 "use strict";,未聲明變量直接拋錯。
  • 輸入驗證:使用 parseFloat + || 0 防御非數字輸入。
  • 除零保護:除法前判斷分母非零。
  • 事件綁定:推薦 addEventListener('click', jiSuan) 替換內聯 onclick。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved