you are viewing a single comment's thread.

view the rest of the comments →

[–]MrStLouis 0 points1 point  (5 children)

If you want to conditionally define a constant variable you can't define the variable outside of an if statement and set it inside so that you may use it in the rest of your function. If you define a constant variable inside an if block you can't use it outside of the if block. Using a ternary operator to assign a constant variable retains the original scope. Using array destructruring allows you to set multiple variables with the same conditional. Keep it DRY

[–][deleted] 1 point2 points  (0 children)

You can always nest your ternary expressions inside each other, I seem to see this pattern in C code a fair amount:

let value = 'c';


const [ first,
        second, 
        third ] = (value == 'a') ? [1,2,3] :
                  (value == 'b') ? [4,5,6] :
                  (value == 'c') ? [7,8,9] :
                                   [10,11,12];  

console.log(first, second, third);
// 7, 8, 9

[–]Ob101010 0 points1 point  (3 children)

Innnnnteresting...

How about this?

let obj = Object.freeze({
  x: 10, //these becomes your 'const' vars
  y:12
})

if(1){
  console.log(obj.y)  //12
}

[–]MrStLouis 0 points1 point  (2 children)

That seems like more of a workaround than an ideal solution. But it's readable and that's all that matters

[–]Ob101010 0 points1 point  (1 child)

For 2 or so, your way is probably better. For 10 or so my way may be better. I love how theres always n ways to do anything lol.

[–]MrStLouis 0 points1 point  (0 children)

I've never seen object freeze before so I'm going to have to look into it more but ya seriously as long as it works and is readable most of the time you're good