作者hth9494 (掰掰惹 仙度瑞拉)
看板Ajax
標題[ js ] 請問這段程式語法代表的意思
時間Fri Aug 6 20:35:44 2021
大家好
最近在學習網站弱點的時候,發現一段程式,但不太明白其語法的涵義
因此想請問一下這種寫法的意思是什麼
以下是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