Create array and push into it in one line

后端 未结 3 989
隐瞒了意图╮
隐瞒了意图╮ 2021-02-04 23:47

The following is just a theoretical JavaScript question. I am curious if the following can be converting into a single statement:

if(!window.foo){
  window.foo =         


        
3条回答
  •  不要未来只要你来
    2021-02-05 00:40

    You've got your assignment backwards*. It should be:

    (window.foo = window.foo || []).push('bar');
    

    The || operator in JavaScript does not return a boolean value. If the left hand side is truthy, it returns the left hand side, otherwise it returns the right hand side.

    a = a || [];
    

    is equivalent to

    a = a ? a : [];
    

    So an alternative way of writing the above is:

    (window.foo = window.foo ? window.foo : []).push('bar');
    

    * see comments for details

提交回复
热议问题