Javascript 推动数组会导致无限循环
下面是一个解决此问题的JSFIDLE,但请小心,因为它包含无休止的循环,并且如果打开控制台,会使浏览器选项卡延迟并最终冻结: 阵列:Javascript 推动数组会导致无限循环,javascript,arrays,vue.js,vuejs2,Javascript,Arrays,Vue.js,Vuejs2,下面是一个解决此问题的JSFIDLE,但请小心,因为它包含无休止的循环,并且如果打开控制台,会使浏览器选项卡延迟并最终冻结: 阵列: days: [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" ], openingDays: [] 模板: {% for day in days %} {[ formatDays(day) ]} {% endfor %} formatDay
days: [
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday"
],
openingDays: []
模板:
{% for day in days %}
{[ formatDays(day) ]}
{% endfor %}
formatDays:
formatDays(day) {
message = translateDays(day);
openingDays.push(message);
}
我所期望的:我的第二个数组应该填充一份天的副本。我得到的:一个无止境的循环,在最后一天之后,它会无限重复自己 Console.log:
["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", ...
我得到了什么:一个无休止的循环,在最后一天之后,它会无限重复自己
无论何时调用formatDays
都会在模板中显示的数据发生更改时导致重新渲染。由于formatDays
是一种方法,直接在模板中使用{{}
在每次重新渲染时都会调用它。因此,无限循环
我所期望的:我的第二个数组应该填充一份天的副本
我已经更新了你的密码
我得到了什么:一个无休止的循环,在最后一天之后,它会无限重复自己
无论何时调用formatDays
都会在模板中显示的数据发生更改时导致重新渲染。由于formatDays
是一种方法,直接在模板中使用{{}
在每次重新渲染时都会调用它。因此,无限循环
我所期望的:我的第二个数组应该填充一份天的副本
我已经更新了你的密码 在formatDays函数中打印消息,并检查formatDays函数的使用次数calling@VijayKrishna这被称为无限时间,但我不明白为什么。模板中translateDays函数旁边的这一部分是唯一出现的,translateDays按预期打印6次。如果我从formatDays中删除Array.push,它也会打印6次。@VijayKrishna我添加了一个小JSFIDLE来显示问题(小心,无休止的循环可能会使浏览器延迟):无论何时调用
formatDays
,它都会在模板中显示的数据发生更改时导致重新渲染。由于formatDays
是一种方法,直接在模板中使用{{}
在每次重新渲染时都会调用它。因此,无限循环。您试图获得的用例到底是什么?我已经更新了你的密码。这就是你想要的吗?@VamsiKrishna,多亏你的解释,我现在理解了这个问题,你的例子很好,我可以根据我的需要调整它。如果您将评论复制到答案,我会将其标记为正确。请在formatDays函数中打印消息,并检查formatDays函数的使用次数calling@VijayKrishna这被称为无限时间,但我不明白为什么。模板中translateDays函数旁边的这一部分是唯一出现的,translateDays按预期打印6次。如果我从formatDays中删除Array.push,它也会打印6次。@VijayKrishna我添加了一个小JSFIDLE来显示问题(小心,无休止的循环可能会使浏览器延迟):无论何时调用formatDays
,它都会在模板中显示的数据发生更改时导致重新渲染。由于formatDays
是一种方法,直接在模板中使用{{}
在每次重新渲染时都会调用它。因此,无限循环。您试图获得的用例到底是什么?我已经更新了你的密码。这就是你想要的吗?@VamsiKrishna,多亏你的解释,我现在理解了这个问题,你的例子很好,我可以根据我的需要调整它。如果你把你的评论复制到一个答案上,我会把它标记为正确的。