gpt4 book ai didi

javascript - 函数在执行后改变对象参数

转载 作者:行者123 更新时间:2023-11-30 19:18:55 27 4
gpt4 key购买 nike

我有一个函数,它接受一个对象参数并且应该从这个参数生成一个字符串值。我需要在另一个函数中使用此参数,但在执行第一个函数时,参数已更改。

这是接受对象参数的函数

export const  generateCron(cronRules: any): string {
const cronKeys: Array<string> = ['minute', 'hour', 'day', 'month', 'year'];
cronKeys.forEach(key => {
if (!cronRules[key]) {
cronRules[key] = '*';
}
});
const { minute, hour, day, month, year } = cronRules;
const cron: string = `${minute} ${hour} ${day} ${month} ${year}`;
return cron;
}

函数是这样调用的

    const { cron } = data;
console.log(cron)
const cronRules: string = generateCron(cron);
console.log(cron)

假设我将 cron 对象设置为 { minute: 1, hour: 2 } 函数按预期返回 1 2 * * *。但安慰 cron对象(第二个控制台)对象已更改为{ 分钟:1,小时:2,日:'*',月:'*',年:'*' }

谁能帮我理解发生了什么

最佳答案

对象在javascript中是通过引用传递的,所以当你调用

cronRules[key] = '*';

您正在更改传递给函数的“cron”对象。

您可以将它用于整个函数,而不是弄乱 cron 对象:

const { minute, hour, day, month, year } = cronRules;
const cron: string = `${minute || '*'} ${hour || '*'} ${day || '*'} ${month || '*'} ${year || '*'}`;
return cron;

它在不修改原始“cron”对象的情况下完成相同的任务。

关于javascript - 函数在执行后改变对象参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57694760/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com