JavaScript大型switch语句,最佳方法如何实现

huangapple go评论46阅读模式
英文:

Js big switch statement, best way to do it

问题

第一种方法和第二种方法在性能和内存使用方面哪一种更好?

方法1

const lookup = {
  case1: () => { /* case1的操作 */ },
  case2: () => { /* case2的操作 */ },
  // ... 其他case
};

switch (expression) {
  case 'case1':
    lookup.case1();
    break;
  case 'case2':
    lookup.case2();
    break;
  // ... 其他case
}

方法2

function lookup(caseName) {
  switch (caseName) {
    case 'case1':
      return () => { /* case1的操作 */ };
    case 'case2':
      return () => { /* case2的操作 */ };
    // ... 其他case
  }
}

lookup(expression);

是否有更好的方式?

英文:

Which of the two approaches is better in performance and memory usage?

Approach 1

const lookup = {
  case1: () => { /* action for case 1 */ },
  case2: () => { /* action for case 2 */ },
  // ... other cases
};

switch (expression) {
  case 'case1':
    lookup.case1();
    break;
  case 'case2':
    lookup.case2();
    break;
  // ... other cases
}

Approach 2

function lookup(caseName) {
  switch (caseName) {
    case 'case1':
      return () => { /* action for case 1 */ };
    case 'case2':
      return () => { /* action for case 2 */ };
    // ... other cases
  }
}

lookup(expression);

Is there a better way?

答案1

得分: 1

你可以使用一个对象代替。

lookup_table = {
  'case1': () => { console.log("case 1"); },
  'case2': () => { console.log("case 2"); }
}

expression = 'case1';
lookup_table[expression]()
英文:

You can use an object instead.

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

lookup_table = {
&#39;case1&#39;: () =&gt; { console.log(&quot;case 1&quot;); },
&#39;case2&#39;: () =&gt; { console.log(&quot;case 2&quot;); }
}

expression = &#39;case1&#39;;
lookup_table[expression]()

<!-- end snippet -->

huangapple
  • 本文由 发表于 2023年2月6日 19:27:00
  • 转载请务必保留本文链接:https://go.coder-hub.com/75360703.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定