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) 字段的值来判断操作是否成功,并根据这些判断结果调用相应的函数

相关推荐
太空程序猿19 分钟前
数据类型与变量
java·开发语言
rit843249927 分钟前
MATLAB实现图像PCA降噪
开发语言·计算机视觉·matlab
*小雪43 分钟前
uniapp写H5授权登录及分享,返回到目标页面
开发语言·javascript·uni-app
性野喜悲43 分钟前
ts+uniapp小程序时间日期选择框(分开选择)
前端·javascript·vue.js
你不是我我1 小时前
【Java 开发日记】SQL 语句左连接右连接内连接如何使用,区别是什么?
java·javascript·数据库
ghie90902 小时前
C#语言中使用“using“关键字的介绍
开发语言·c#
七夜zippoe2 小时前
Java性能调优工具篇:JMH基准测试与Profiler(JProfiler/Async-Profiler)使用指南
java·开发语言·jprofiler·jmh·async-profiler
一壶浊酒..2 小时前
请求签名(Request Signature)
javascript
小龙报2 小时前
《嵌入式成长系列之51单片机 --- Keil5创建工程》
c语言·开发语言·c++·单片机·嵌入式硬件·51单片机·学习方法
无限进步_3 小时前
【C语言】贪吃蛇游戏设计思路深度解析:从零开始理解每个模块
c语言·开发语言·c++·git·游戏·github·visual studio