优先级 运算类型 关联性 运算符
    21 圆括号 n/a(不相关) ( … )
    20 成员访问 从左到右 … . …
    需计算的成员访问 从左到右 … [ … ]
    new (带参数列表) n/a new … ( … )
    函数调用 从左到右 … ( … )
    可选链(Optional chaining) 从左到右 ?.
    19 new (无参数列表) 从右到左 new …
    18 后置递增(运算符在后) n/a
    … ++
    后置递减(运算符在后) … --
    17 逻辑非 从右到左 ! …
    按位非 ~ …
    一元加法 + …
    一元减法 - …
    前置递增 ++ …
    前置递减 -- …
    typeof typeof …
    void void …
    delete delete …
    await await …
    16 从右到左 … ** …
    15 乘法 从左到右
    … * …
    除法 … / …
    取模 … % …
    14 加法 从左到右
    … + …
    减法 … - …
    13 按位左移 从左到右 … << …
    按位右移 … >> …
    无符号右移 … >>> …
    12 小于 从左到右 … < …
    小于等于 … <= …
    大于 … > …
    大于等于 … >= …
    in … in …
    instanceof … instanceof …
    11 等号 从左到右
    … == …
    非等号 … != …
    全等号 … === …
    非全等号 … !== …
    10 按位与 从左到右 … & …
    9 按位异或 从左到右 … ^ …
    8 按位或 从左到右 `… …`
    7 逻辑与 从左到右 … && …
    6 逻辑或 从左到右 `… …`
    5 空值合并 从左到右 … ?? …
    4 条件运算符 从右到左 … ? … : …
    3 赋值 从右到左 … = …
    … += …
    … -= …
    … **= …
    … *= …
    … /= …
    … %= …
    … <<= …
    … >>= …
    … >>>= …
    … &= …
    … ^= …
    `… = …`
    … &&= …
    `… = …`
    … ??= …
    2 yield 从右到左 yield …
    yield* yield* …
    1 展开运算符 n/a ...
    0 逗号 从左到右 … , …

    示例:

    1. // 错误
    2. data?.crossFullUrl && data.crossFullUrl += '&code=3'
    3. // 修正
    4. data?.crossFullUrl && data.crossFullUrl += '&code=3'

    image.png