JavaScript 复杂的<三元运算符和比较操作>的组合--案例(一)

在逆向的时候,碰上有些复杂的js代码,逻辑弄得人有点混;

因此本帖用来记录一些棘手的代码,方便自己记忆,也让大家拓展认识~

----前言

内容:

javascript 复制代码
function(e, t, n) {
                    try {
                        1 == (e = "{" == e[0] ? JSON.parse(e) : JSON.parse(webInstace.shell(e))).Status || 200 == e.Code ? r(e.Data) : 200 == e.code ? r(e.data) : a(e.Msg)
                    } catch (e) {
                        a(e)
                    }

解析:

总:

这段 JavaScript 代码是一个复杂的三元运算符和比较操作的组合。这段代码主要用于确定如何处理结果对象 e,看是直接作为 JSON 解析,是通过某个 webInstance.shell 函数调用得到解析,以及如何处理成功与否后的调用。

步骤:

1.首先,判断变量 e 的第一个字符是否是 {:
如果 e[0] === "{" 条件为 true,则假定 e 是一个 JSON 字符串,所以尝试 JSON.parse(e) 来解析它。
如果不满足 e[0] === "{"(即 e 的首字母不是 {),则调用 webInstance.shell(e) 方法,随后对返回的结果尝试 JSON.parse。
计算结束后,无论 e 由哪种方式解析,结果会重新赋值给变量 e。
2.接下来的比较操作是在尝试归类 e 是否标识了成功的状态。为此进行了多个等价性比较:
  1. 首先比较 e.Status 是否等于 1。如果等于,这说明操作是成功的,然后调用函数 r(e.Data) 并传入 e.Data。
  2. 如果第一个条件不成立(e.Status 不等于 1),则检查 e.Code 是否等于 200。如果等于 200,也被认为是成功的,同样调用函数 r(e.Data)。
  3. 如果 e.Code 不等于 200,则还会检查 e.code (注意这里的 code 是小写)是否等于 200。如此相等,则调用函数 r(e.data) (这里 e.data 是小写)。
3.如果所有上述都为 false,即 e 的 Status 和 Code(或 code,注意大小写)都不符合成功的条件,则调用函数 a(e.Msg) 并传入 e.Msg,它通常代表某种错误或状态消息。

综上所述,这段代码的目的是处理一个动态响应体 e。它首先尝试解析 e, 然后根据 Status 或 Code (或 code) 字段的值来判断操作是否成功,并根据这些判断结果调用相应的函数

相关推荐
索迪迈科技12 分钟前
java后端工程师进修ing(研一版 || day40)
java·开发语言·学习·算法
十碗饭吃不饱14 分钟前
net::ERR_EMPTY_RESPONSE
java·javascript·chrome·html5
Zz_waiting.37 分钟前
Javaweb - 14.6 - Vue3 数据交互 Axios
开发语言·前端·javascript·vue·axios
萌新小码农‍39 分钟前
Java分页 Element—UI
java·开发语言·ui
Tiger_shl1 小时前
【.Net技术栈梳理】03-核心框架与运行时(异常处理)
开发语言·.net
再睡亿分钟!1 小时前
Spring MVC 的常用注解
java·开发语言·spring boot·spring
MChine慕青1 小时前
顺序表与单链表:核心原理与实战应用
linux·c语言·开发语言·数据结构·c++·算法·链表
qq_195551691 小时前
代码随想录70期day7
java·开发语言
每天吃饭的羊2 小时前
state和ref
前端·javascript·react.js
GEO_YScsn2 小时前
Vite:Next-Gen Frontend Tooling 的高效之道——从原理到实践的性能革命
前端·javascript·css·tensorflow