首页 > 解决方案 > 条件赋值和返回赋值背后的逻辑是什么

问题描述

我不会对这个故事感到厌烦,但本质上我有一些晦涩的 JavaScript 需要处理,这一切都很好,但我正在努力处理我以前从未见过的代码中的 2 种模式。

下面的这个函数包含这两种模式。


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?return 是一系列语句,那么它实际上返回的是什么?到底是怎么void回事?

标签: javascript

解决方案


几乎所有东西都是 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) {}

推荐阅读