[ js ] 請問這段程式語法代表的意思

作者: hth9494 (hth9494)   2021-08-06 20:35:44
大家好
最近在學習網站弱點的時候,發現一段程式,但不太明白其語法的涵義
因此想請問一下這種寫法的意思是什麼
以下是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)也是參數嗎
以上兩點是我困惑的地方
謝謝
作者: lynx (冠)   2021-08-06 20:47:00
看起來是IIFE,但少了個括號,這樣能執行嗎@@
作者: hth9494 (hth9494)   2021-08-06 20:52:00
我有直接把整段程式複製到exploit server執行 是有結果的
作者: BugofBook (數學書蟲)   2021-08-06 22:30:00
你可以找"high order function"大多是有react 底子的工程師會這樣寫。是要找“curry javascript”才對
作者: microloft (微閣)   2021-08-06 22:50:00
IIFE 在表達式 (expression) 中不用括號也可以執行應該說加括號本來就是要讓它變成表達式
作者: lynx (冠)   2021-08-06 23:25:00
謝謝樓上
作者: horsekit (New Life)   2021-10-11 14:23:00
這應該跟react沒關係 個人不愛這種寫法 也很少看到在迴圈用IIFE 很難閱讀

Links booklink

Contact Us: admin [ a t ] ucptt.com