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

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

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

----前言

内容:

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 的第一个字符是否是 {:
  1. 如果 e[0] === "{" 条件为 true,则假定 e 是一个 JSON 字符串,所以尝试 JSON.parse(e) 来解析它。
  2. 如果不满足 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) 字段的值来判断操作是否成功,并根据这些判断结果调用相应的函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/208296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux学习笔记7-IIC的应用和AP3216C

接下来进入其他两种串行通信方式:SPI和I2C的学习,因为以后的项目中会用到这些通信方式,而且正点原子的开发板里面也有用I2C和SPI通信的传感器来做实例,分别是一个距离传感器和六轴陀螺仪,这样就可以很好的通过实例来学…

GRE与顺丰圆通快递盒子

1. DNS污染 随想: 在输入一串网址后,会发生如下变化如果你在系统中配置了 Hosts 文件,那么电脑会先查询 Hosts 文件如果 Hosts 里面没有这个别名,就通过域名服务器查询域名服务器回应了,那么你的电脑就可以根据域名服…

第六届“强网”拟态防御国际精英挑战赛——入围战队篇

第六届“强网”拟态防御国际精英挑战赛即将于2023年12月6日在南京盛大开赛!本届挑战赛再次为全球顶尖战队提供实战机会,向多类拟态防御设备系统发起挑战,在众测实战中持续检验中国制造内生安全数字产品所具有的中国力量。 本届挑战赛参赛战队…

【LeetCode:1466. 重新规划路线 | DFS + 图 + 树】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Vue 子路由页面发消息给主路由页面 ,实现主页面显示子页面的信息

需求 子页面进入后,能在主页面显示子页的相关信息,比如说主页面的菜单激活的是哪个子页面的菜单项 如上图,当刷新浏览器页面时,让菜单的激活项仍保持在【最近浏览】。 实现方式: 在子页面的create事件中增加&#xff…

Java File类详解(下)练习一

练习 第一题 需求:在当前模块下的aaa文件夹中创建一个a.txt文件 import java.io.File; import java.io.IOException;public class FileExer01 {public static void main(String[] args) throws IOException {File f1 new File("AllInOne\\aaa");f1.mk…

docker-compose脚本编写关键词详解

docker-compose脚本编写高频关键词(一) 此处关键词应该必须能灵活运用 关键词 解释 例子 version 定义使用的docker-compose文件版本。较新的版本支持更丰富的功能和选项。 version: 3.8 services 定义应用程序的各个服务及其配置。每个服务通常…

Vue:绘制图例

本文记录使用Vue框架绘制图例的代码片段。 可以嵌入到cesium视图中,也可以直接绘制到自己的原生系统中。 一、绘制图例Vue组件 <div v-for="(color, index) in colors" :key="index" class="legend-item"><div class="color-…

深度学习还可以从如下方面进行创新!!

文章目录 一、我认为可以从如下5个方向进行创新总结 一、我认为可以从如下5个方向进行创新 新的模型结构&#xff1a;尽管现在的深度学习模型已经非常强大&#xff0c;但是还有很多未被探索的模型结构。探索新的模型结构可以带来更好的性能和更低的计算成本。 新的优化算法&a…

JavaScript数组面试题

JavaScript数组面试题 创建一个包含多个元素的数组&#xff0c;并打印输出数组的内容。 const array ["apple", "banana", "orange"]; console.log(array);如何访问数组中的特定元素&#xff1f; const array ["apple", "banan…

JS判断数组中是否包含某个值

方法一&#xff1a;array.indexOf 此方法判断数组中是否存在某个值&#xff0c;如果存在&#xff0c;则返回数组元素的下标&#xff0c;否则返回-1。 var arr[1,2,3,4]; var indexarr.indexOf(3); console.log(index);方法二&#xff1a;array.includes(searcElement[,fromIn…

一个简单的postman设置断言,为何会难住一个工作5年的测试?

postman设置断言 作为一款接口测试工 具&#xff0c;postman需要对发送请求后返回的结果是否正确做验证&#xff0c;在postman中通过 tests页签做请求的验证&#xff0c;也称为断言。 postman设置断言的流程 1、在tests页签截取要对比的实际响应信息&#xff08;响应头、响应…

眼花缭乱的ADN/ADX/DSP/DMP/SSP和他们的关系链

做过互联网广告尤其是程序化广告的同学都遇到过以下这些名词&#xff0c;或许正被他们折磨的焦头烂额&#xff0c;这篇文章&#xff0c;我们就来说说这些概念的含义及他们之间的关系链。 ADN&#xff1a;AD Network——广告网络或广告联盟。连接广告主和媒体的中间商。 ADX&…

stm32串口编程实例-实现数据的收发功能

大家好&#xff0c;今天给大家介绍stm32串口编程实例&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 串口是USART(通用同步/异步收发器)的俗称。 实际上&#xff0c;串行总线并不…

2023年8月8日 Go生态洞察:Go 1.21 版本发布探索

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

中小企业都在用哪些开源项目管理工具?分享15款

推荐15个优秀的开源项目管理工具&#xff0c;比如&#xff1a;ProjectLibre、OpenProject、ERPNext、Redmine、禅道、Tuleap、Restyaboard等。 项目经理面临各种复杂任务&#xff0c;包括追踪任务的进度、评估交付风险和管理整体工作量。为了顺利达成目标&#xff0c;一款靠谱的…

ALLEGRO PCB 如何设置增加的过孔

Allegro添加过孔 1、首先建立焊盘&#xff08;热风焊盘&#xff09; Via20x10mil(tr30x45x12mil_45) 2、设置过孔的焊盘 Setup-->Constraints&#xff08;约束&#xff09;-->Physical 弹出以下对话框Allegro Constraint Manager 可以通过右键点击PC S&#xff08;…

ArchLinux下载链接

LINUX花样太多&#xff0c;不得不跟着别人要求。 Arch Linux - Downloads Index of /archlinux/iso/2023.12.01/

学习IO的第四天

作业 : 使用两个子进程完成两个文件的拷贝&#xff0c;子进程1拷贝前一半内容&#xff0c;子进程2拷贝后一般内容&#xff0c;父进程用于回收两个子进程的资源 #include <head.h>int main(int argc, const char *argv[]) {int rd -1;if((rdopen("./01_test.c&quo…

零基础如何入门HarmonyOS开发?

HarmonyOS鸿蒙应用开发是当前非常热门的一个领域&#xff0c;许多人都想入门学习这个技术。但是&#xff0c;对于零基础的人来说&#xff0c;如何入门确实是一个问题。下面&#xff0c;我将从以下几个方面来介绍如何零基础入门HarmonyOS鸿蒙应用开发学习。 一、了解HarmonyOS鸿…