【问题标题】:Should I pass an objects as a parameters of a function?我应该将对象作为函数的参数传递吗?
【发布时间】:2021-08-26 23:09:37
【问题描述】:

所以我有这个代码:

const failure1 = false;
const failure2 = false;

function callbackFunction(callback, errorCallback) {
    if (failure1) {
        errorCallback({
            name: 'Negative event1 occurred',
            message: ':('
        })
    } else if (failure2) {
        errorCallback({
            name: 'Negative event2 occurred',
            message: ':/'
        })
    } else {
        callback('Mission complete!')
    }
}

callbackFunction((message) => {
    console.log('Success: ' + message)
}, (error) => {
    console.log(error.name + ' ' + error.message)
})

这看起来非常糟糕:

errorCallback({
   name: 'Negative event2 occurred',
   message: ':/'
})

像这样将对象作为函数参数传递是否合乎道德?因为现在,我只是看着它,我的大脑就在煎炸。

我应该如何阅读它?这是一个未命名的对象(分配给 errorCallback 函数 - 这是 callbackFunction 的参数),具有两个属性(名称和消息),后来分配给错误未命名函数的参数(代码底部)?对吗?

我还听说这是一段非常简单的代码 - 这是真的吗?因为对我来说这太令人费解了。

提前感谢您花时间回答问题。

【问题讨论】:

  • 将对象作为函数参数传递没有错。您已经在将函数对象传递给callbackFunction(callback, errorCallback)。如果看起来很麻烦,您总是可以创建一个分配给变量的对象并将命名变量作为参数传递errorCallback(messageObject)

标签: javascript function callback


【解决方案1】:

将对象作为参数传递有时实际上更有意义且更易于阅读。

一个非常简单的函数示例:

function minus(b,a){
    return b-a
}

通常人们会将其用作:

minus(1,5) 
// Expected : 4, Because the latter number minus the first.
// But, it will return result of -4, without look into the function
// we do not know which number came first.

但是如果我们把它变成一个对象:

function minus(param){
    return param.b-param.a
}

minus({a:1,b:5})
//Return : 4
//Like this, even if you don't know the content of the function
//you can still assign the correct value without knowing the order.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 2021-04-13
    相关资源
    最近更新 更多