Hướng dẫn javascript eval alternative calculator - javascript eval máy tính thay thế

Tôi đang sử dụng eval trong chức năng tính toán của mình. Tôi muốn sử dụng một giải pháp thay thế, nhưng việc tìm kiếm trực tuyến đang dẫn tôi đến các giải pháp rất phức tạp hoặc các giải pháp yêu cầu tôi phải viết lại hoàn toàn mã của mình. Có cách nào để sử dụng một cái gì đó khác trong hàm tính toán mà không phải thay đổi đáng kể phần còn lại của mã của tôi không?

Đây là mã app.js của tôi

import Buttons from "./components/Buttons";
import Display from "./components/Display";
import {useState} from "react";
import Screen from "./components/Screen";


function App() {

  const [disp, setDisp] = useState("")

  const [value, setValue] = useState("")

  function handleChange(event) {
    const input = event.target.value

    setValue(prevState => prevState + input)
    setDisp(input)
  }

  function errorCatch() {
    setValue(prevState => 
    prevState === "+" ||
    prevState === "*" ||
    prevState === "/" ||
    prevState === "-+" ||
    prevState === "-*" ||
    prevState === "-/" ||
    prevState === "--"
    ? setDisp("ERROR")
    : prevState.length > 20
    ? setDisp("MAX LIMIT REACHED")
    : prevState)
  }

  function calculate() {

    setDisp(eval(value))
    setValue(value)
 
  }

  function backspace() {
    setValue(value.slice(0, -1))
    setDisp(disp.slice(0, -1))
  }

  function clear() {
    setValue("")
    setDisp("")
  }

  return (
    
); } export default App;

Đây là mã của tôi.js mã


const btnValues = [
    ["AC", "DEL", "/"],
    [7, 8, 9,"*"],
    [4, 5, 6, "-"],
    [1, 2, 3, "+"],
    [0, ".", "="]
]


export default function Buttons(props) {  
    return (
        
{ btnValues.flat().map((i) => { return ( ) }) }
) }

Logic cho máy tính xây dựng bằng cách sử dụng JavaScript mà không cần sử dụng Eval với các ví dụ về mã

Chúng tôi sẽ cố gắng sử dụng lập trình trong bài học này để giải quyết logic để xây dựng máy tính bằng cách sử dụng JavaScript mà không cần sử dụng câu đố Eval. Điều này được thể hiện trong mã dưới đây.

function parseCalculationString(s) {
    // --- Parse a calculation string into an array of numbers and operators
    var calculation = [],
        current = '';
    for (var i = 0, ch; ch = s.charAt(i); i++) {
        if ('^*/+-'.indexOf(ch) > -1) {
            if (current == '' && ch == '-') {
                current = '-';
            } else {
                calculation.push(parseFloat(current), ch);
                current = '';
            }
        } else {
            current += s.charAt(i);
        }
    }
    if (current != '') {
        calculation.push(parseFloat(current));
    }
    return calculation;
}
function calculate(calc) {
    // --- Perform a calculation expressed as an array of operators and numbers
    var ops = [{'^': (a, b) => Math.pow(a, b)},
               {'*': (a, b) => a * b, '/': (a, b) => a / b},
               {'+': (a, b) => a + b, '-': (a, b) => a - b}],
        newCalc = [],
        currentOp;
    for (var i = 0; i < ops.length; i++) {
        for (var j = 0; j < calc.length; j++) {
            if (ops[i][calc[j]]) {
                currentOp = ops[i][calc[j]];
            } else if (currentOp) {
                newCalc[newCalc.length - 1] = 
                    currentOp(newCalc[newCalc.length - 1], calc[j]);
                currentOp = null;
            } else {
                newCalc.push(calc[j]);
            }
            console.log(newCalc);
        }
        calc = newCalc;
        newCalc = [];
    }
    if (calc.length > 1) {
        console.log('Error: unable to resolve calculation');
        return calc;
    } else {
        return calc[0];
    }
}
var calculateButton = document.getElementById('calculate'),
    userInput = document.getElementById('userInput'),
    result = document.getElementById('result');
calculateButton.addEventListener('click', function() {
    result.innerHTML = "The answer is " + calculate(parseCalculationString(userInput.value));
});

Sử dụng nhiều ví dụ khác nhau, chúng tôi đã học được cách giải quyết logic để xây dựng máy tính bằng cách sử dụng JavaScript mà không cần sử dụng Eval.

Tôi có thể sử dụng gì thay vì Eval trong JavaScript?

Một thay thế cho eval là chức năng (). Giống như eval (), function () lấy một số biểu thức làm chuỗi để thực thi, ngoại trừ, thay vì xuất kết quả trực tiếp, nó trả về một hàm ẩn danh cho bạn mà bạn có thể gọi. `Function () là một giải pháp thay thế nhanh hơn và an toàn hơn cho eval ().

Làm thế nào chúng ta có thể tạo máy tính trong JavaScript?

Result.html const number1 = parseFloat (nhắc ('nhập số đầu tiên:')); const number2 = parsefloat (nhắc ('nhập số thứ hai:')); để kết quả; // Tuyên bố của biến. // Sử dụng nếu, otherif và từ khóa khác để xác định điều kiện máy tính trong JavaScript.

Làm thế nào chúng ta có thể tạo một máy tính đơn giản bằng cách sử dụng HTML và JavaScript?

Các bước để tạo một máy tính đơn giản bằng cách sử dụng HTML và JavaScript

  • Lúc đầu chèn một phần tử trong thẻ.
  • Tạo một bảng bằng cách sử dụng… ..
  • Chèn hai loại văn bản đầu vào và nút trong dữ liệu bảng của hàng bảng bằng cách sử dụng.
  • Gán sự kiện onclick cho tất cả các nút có số và toán tử số học.

Tại sao chúng ta không nên sử dụng Eval trong JavaScript?

Eval () là một chức năng nguy hiểm, thực thi mã được thông qua với các đặc quyền của người gọi. Nếu bạn chạy eval () với một chuỗi có thể bị ảnh hưởng bởi một bên độc hại, bạn có thể sẽ chạy mã độc trên máy của người dùng với các quyền của trang web / tiện ích mở rộng của bạn.13-SEPT-2022

Tại sao JSON Eval không được khuyến nghị sử dụng?

Máy chủ của bạn có thể bị xâm phạm và nguồn dữ liệu có thể bị giả mạo.24-NOV-2010

Được đánh giá không dùng nữa?

Câu hỏi: Phương thức 'Eval' trong JavaScript / RequestWarescript được không dùng nữa dựa trên các rủi ro bảo mật tiềm năng bằng cách sử dụng phương pháp này vì nó không thoát khỏi các tham số đầu vào. Trả lời: Thay vào đó, bạn nên sử dụng 'Hàm mới ()'.

Làm thế nào để bạn làm các cổng logic trên một máy tính?

Để thực hiện việc thực hiện, bạn phải đặt A và B qua một cổng và cổng, và đặt đầu ra của cổng XOR B và cũng mang theo qua một cổng. Khi bạn đặt 2 đầu ra đó vào một cổng OR, bạn sẽ nhận được một bit mang theo. Vì vậy, bây giờ chúng ta có thể đặt một loạt các trong số này lại với nhau và có được một máy tính.

Làm thế nào để bạn mã hóa một máy tính?

Làm thế nào để bạn tạo một máy tính với Node JS?

Bước 1: Tạo và mở thư mục dự án của bạn trong Trình chỉnh sửa mã. Bước 2: Tạo một ứng dụng 'tệp. JS ': Bên trong tệp này, chúng tôi sẽ viết mã. Bước 3: Tạo một 'argvs' không đổi và đặt nó thành quá trình.08-Aug-2022

Làm thế nào một máy tính khoa học sử dụng HTML?

HTML