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

JavaScript 計算器:prompt 獲取輸入為字符串導致加法變拼接的解決方案

     編輯:程式設計綜合問答

初學 JS 寫計算器時,常遇到一個「加法變拼接」的坑:

x = window.prompt("請輸入第一個數字:");
y = window.prompt("請輸入第二個數字:");
// 用戶輸入 1 和 2
alert(x + y); // 彈出 "12" 而不是 3

根本原因

prompt、input.value、textarea.value 返回的**都是字符串**。JS 中 + 運算符同時承擔「數字相加」與「字符串拼接」,只要任一操作數是字符串,就觸發拼接。

三種轉數字的標準姿勢

1. parseInt / parseFloat(最常用)

let a = parseInt(prompt("整數:"), 10); // 基數 10 防八進制誤解
let b = parseFloat(prompt("小數:"));

2. Number() / 一元加號 +(更嚴格)

let a = Number(prompt("數字:")); // 無法解析返回 NaN
let b = +prompt("數字:");        // 簡寫,同 Number()

3. 乘以 1 / 減 0(舊技巧,不推薦)

let a = prompt("數字:") * 1; // 隱式轉換

修正後的計算器核心邏輯

function calc() {
  const x = Number(prompt("第一個數字:"));
  const y = Number(prompt("第二個數字:"));
  const op = prompt("運算符 + - * / :");

  let result;
  switch (op) {
    case '+': result = x + y; break;
    case '-': result = x - y; break;
    case '*': result = x * y; break;
    case '/': result = y !== 0 ? x / y : '除數不能為0'; break;
    default: result = '未知運算符';
  }
  alert(`結果: ${result}`);
}

進階防坑建議

  • 輸入驗證:if (isNaN(x) || isNaN(y)) return alert('請輸入合法數字');
  • 浮點數精度:涉及金額計算時,先 * 100 轉整數運算,最後 / 100,或用 toFixed(2)。
  • 避免 eval():安全風險極大,嚴禁生產環境使用。

牢記「所有用戶輸入默認是字符串,運算前必須顯式轉型」,JS 基礎大廈才穩固。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved