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.pswp.cn/news/208296.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208296.shtml
英文地址,請注明出處:http://en.pswp.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鴻…