目录

重构 if-else 或 switch 成 table

if-else❌

1
2
3
4
5
6
7
if (season === "summer") {
  return "It's 30, hot!";
} else if (season === "winter") {
  return "It's 2, cold!";
} else {
  return "It's 20, good!";
}

switch❌

1
2
3
4
5
switch (season) {
	case "summer": return "It's 30, hot!";
	case "winter": return "It's 2, cold!";
	default: return "It's 20, good!";
}

table✅

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
const seasonConfig = {
	summer: { text: "hot!", temperature: 30 },
	winter: { text: "cold!", temperature: 2 },
	defaultKey: { text: "good!", temperature: 20 }
};
function getValueFromTable(table, key, defaultKey) {
	return table[key] || table[defaultKey];
}
const summer = getValueFromTable(seasonConfig, "summer", "defaultKey");
summerDOM.innerHTML = `It's ${summer.temperature}, ${summer.text}`;

Why table✅?

因为后续加 case 的时候只需要在 table 加就行了!

而且数据和逻辑分开了!

Why named “Table”?

Code

1
2
3
4
5
const table = {
	summer: { text: "hot!", temperature: 30 },
	winter: { text: "cold!", temperature: 2 },
	defaultKey: { text: "good!", temperature: 20 }
};

Table

Key Text Temperature
summer “hot!” 30
winter “cold!” 2
defaultKey “good!” 20

这不是很 Table 嘛!

Codepen Example