看板 Ajax 關於我們 聯絡資訊
大家好 最近在學習網站弱點的時候,發現一段程式,但不太明白其語法的涵義 因此想請問一下這種寫法的意思是什麼 以下是lab的連結 https://portswigger.net/web-security/cors/lab-internal-network-pivot-attack 點開solution後就會有程式碼跑出來 我有困惑的地方是在Step1中的 for(i=1;i<=255;i++){ q.push( function(url){ return function(wait){ fetchUrl(url,wait); } }('http://192.168.0.'+i+':8080')); } q.push(function(...){...}('http://192...')); 這一段function(...){...}後面怎麼又跟了一個('http://192...'),不太清楚這個要怎麼理解 第一次看見function(){}()這樣的語法 後面這個('http://192...')是參數嗎,是什麼的參數要傳去哪裡 另外還有下面一點的 if(q.length)q.shift()(i*100); q.shift()()這樣的語法也是第一次見 後面的(i*100)也是參數嗎 以上兩點是我困惑的地方 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.146.16 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1628253351.A.697.html
lynx: 看起來是IIFE,但少了個括號,這樣能執行嗎@@ 08/06 20:47
hth9494: 我有直接把整段程式複製到exploit server執行 是有結果的 08/06 20:52
BugofBook: 你可以找"high order function" 08/06 22:30
BugofBook: 大多是有react 底子的工程師會這樣寫。 08/06 22:33
BugofBook: 是要找“curry javascript”才對 08/06 22:36
microloft: IIFE 在表達式 (expression) 中不用括號也可以執行 08/06 22:50
microloft: 應該說加括號本來就是要讓它變成表達式 08/06 22:53
lynx: 謝謝樓上 08/06 23:25
horsekit: 這應該跟react沒關係 個人不愛這種寫法 也很少看到在迴 10/11 14:23
horsekit: 圈用IIFE 很難閱讀 10/11 14:23