Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The expression immediately to the right of each 'case' keyword is evaluated before the resulting values are compared to true.


If that's the case, then wouldn't both "asdf" and "qwer" be printed to the console when executing the following code?

  function test() {
      switch (true) {
          case console.log('asdf') === undefined: return 1;
          case console.log('qwer') === undefined: return 2;
      }
  }
  test();


Hmm, I wrote some similar test code before writing my comment, but only included one 'case'. Indeed, you're right, they're evaluated only as needed.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: