条件句中的赋值和收益中的赋值背后的逻辑是什么

时间:2019-05-02 10:06:16

标签: javascript

我不会对这个故事感到厌烦,但是从本质上来说,我有一些晦涩难懂的JavaScript可以很好地处理所有问题,但是我在代码中遇到了两种我从未见过的模式。

下面的此功能包含两种模式。


var a = function() {
            if (h = true,
            T(),
            DEVELOPMENT && "#y0" == window.location.hash)
                return game.playRegion = "eu",
                game.playRoom = "ffa1",
                game.playInvited = true,
                game.myOriginalName = window.location.hash.substr(1),
                void Games.start(game.myOriginalName, true);
            f || (I(),
            Games.updateRegion(false),
            Games.updateType(false),
            C())
        }
  1. 首先查看if语句。我从未见过if做赋值和调用函数,所以我不理解条件逻辑。我是否可以将语句移至if上方,或者除非满足全部条件,否则语句是否不运行?我可以这样做吗?
h = true;
T();
if (DEVELOPMENT && window.location.hash === "#y0"){}
  1. return怎么了?返回是一系列语句,那么实际上返回的是什么? void的全部含义是什么?

1 个答案:

答案 0 :(得分:1)

几乎所有内容都是JavaScript中的表达式。

分配也只是表达式。 a = b的值为b

逗号运算符(已被广泛使用)求值在逗号的右边,因此a, b, c求值为c

void采用任何表达式,并且始终取值为undefined

因此,此:

 return a = b, void c();

 if(d(), e) {}

等于:

 a = b;
 c();
 return undefined;

 d();
 if(e) {}