亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Javascript 中,簡單的計算器,不起作用

在 Javascript 中,簡單的計算器,不起作用

Cats萌萌 2022-10-21 15:13:46
我試圖通過 prompt() 和動作名稱來獲取數字。但結果并不如預期我是編程新手.. 代碼:function add(n1, n2){   return n1 + n2;}function sub(n1, n2){   return n1 - n2;}function mult(n1, n2){  return n1 * n2;}function div(n1, n2){   return n1/n2;}function calculator(n1, n2, action){    alert(action(n1, n2));}calculator(prompt("first no,"), prompt("second No"), prompt("calc"));
查看完整描述

3 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

你需要做兩件事:

  1. 將輸入解析為浮點數

  2. 映射用戶給定的函數名

function add(n1, n2) { return n1 + n2; }

function sub(n1, n2) { return n1 - n2; }

function mult(n1, n2) { return n1 * n2; }

function div(n1, n2) { return n1 / n2; }


function calculator(n1, n2, action) {

  alert(action(n1, n2));

}


function findOperation(name) {

  switch (name) {

    case "sub":

      return sub;

    case "mult":

      return mult;

    case "div":

      return div;

    case "add":

    default:

      return add;

  }

}


calculator(

  parseFloat(prompt("first no,")),

  parseFloat(prompt("second No")),

  findOperation(prompt("Operation Name?"))

);


查看完整回答
反對 回復 2022-10-21
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

我建議您花時間學習一些基礎知識,除非您像這樣使用 eval() ,否則您無法將字符串轉換為函數調用:


function add(n1, n2){ return n1 + n2;}

function sub(n1, n2){ return n1 - n2;}

function mult(n1, n2){ return n1 * n2;}

function div(n1, n2){ return n1/n2;}


function calculator(n1, n2, action){

alert(eval(`${action}(${n1}, ${n2})`));

}


calculator(prompt("first no,"), prompt("second No"), prompt("calc"));

但這確實是 hacky 和不安全的代碼,更好的方法是:


const ops = {

"add": (n1, n2) => n1 + n2,

"sub": (n1, n2) => n1 - n2,

"mult": (n1, n2) => n1 * n2,

"div": (n1, n2) => n1/n2

}


function calculator(n1, n2, action){

alert(ops[action](parseFloat(n1), parseFloat(n2)));

}


calculator(prompt("first no,"), prompt("second No"), prompt("calc"));

還要注意 parseFloat(),如果你將參數保存為字符串,你會得到:


input: "1", "2", "add" output: "12"


查看完整回答
反對 回復 2022-10-21
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

計算器功能應該是:


function calculator(n1, n2, action){


    alert(eval(action+'('+n1+', '+n2+')'));

}


查看完整回答
反對 回復 2022-10-21
  • 3 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號