【发布时间】:2020-12-29 18:58:03
【问题描述】:
这是一段用于 HTML 表单的 JavaScript 代码。我想提高效率,不要多次写同一行;这在下面的代码中可行吗?
function resetOptions(location)
{
if (location=='country')
{
removeOptions(selected_address_zone)
removeOptions(selected_address_region)
removeOptions(selected_address_city)
removeOptions(selected_address_area)
}
else if (location=='zone')
{
removeOptions(selected_address_region)
removeOptions(selected_address_city)
removeOptions(selected_address_area)
}
else if (location=='region')
{
removeOptions(selected_address_city)
removeOptions(selected_address_area)
}
else
{
removeOptions(selected_address_area)
}
}
【问题讨论】:
-
这需要一个查找表,例如
{ country: [ selected_address_zone, ... ], zone: [ ... ] },您可以直接跳转到需要删除的列表。 -
重复并不意味着在所有情况下都出于相同的原因调用行。您应该只干掉出于相同原因调用的行。在您的情况下,如果我将
selected_address_area移动到if .. else之外,因为它适用于所有情况,那么下次我引入新的else if时会遇到问题,或者我需要更改要删除的区域选项。 -
"不要重复同一行不止一次" 只是出于好奇,您是说这个吗?或者你的意思是你不想多次写同一行?
-
@TylerH removeOptions(selected_address_area) 已经写了三遍了,我只想写一次
标签: javascript if-statement dry