我正在嘗試做這樣的事情:
function simpleOperations(operation) {
let myFanction = new Function('a', 'b', 'a ' operation ' b');
return myFanction
}
let sum = simpleOperations(" ")
let multiplicate = simpleOperations("*")
console.log("your sum is: " sum(3,7));
console.log("your product is: " multiplicate(3,7));
而不是得到:
your sum is: 10
your product is: 21
我得到這個:
your sum is: undefined
your product is: undefined
你對如何解決它有什么想法嗎?:)
uj5u.com熱心網友回復:
函式的文本主體需要return該值,否則您的a b或a * b等將只是一個未使用的運算式。
function simpleOperations(operation) {
let myFanction = new Function('a', 'b', 'return a ' operation ' b');
return myFanction
}
let sum = simpleOperations(" ")
let multiplicate = simpleOperations("*")
console.log("your sum is: " sum(3,7));
console.log("your product is: " multiplicate(3,7));
uj5u.com熱心網友回復:
使用Function是一種反模式。它離eval我們還有一段距離,而且總是有更好的撰寫方式,尤其是考慮到 JavaScript 已經支持一流的功能——
const add = (a, b) => a b
const multiply = (a, b) => a * b
console.log("your sum is: " add(3,7))
console.log("your product is: " multiply(3,7))
your sum is: 10
your product is: 21
相反,如果您想使用" "和"*"字串訪問函式,您可以創建一個簡單的查找并在不支持特定操作時拋出錯誤 -
const operations = {
" ": (a, b) => a b,
"*": (a, b) => a * b
}
function simpleOperations(op) {
const f = operations[op]
if (f == null)
throw Error(`unsupported operation: ${op}`)
return f
}
const add = simpleOperations(" ")
const multiply = simpleOperations("*")
console.log("your sum is: " add(3,7))
console.log("your product is: " multiply(3,7))
const divide = simpleOperations("/") // <- not yet implemented
your sum is: 10
your product is: 21
Error: unsupported operation: /
實作一個簡單的計算器是學習如何撰寫第一種編程語言的好方法。如果您對此類事情感興趣,請參閱此相關問答。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/363901.html
標籤:javascript 功能 关闭
