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

看板Ajax作者 (掰掰惹 仙度瑞拉)時間3年前 (2021/08/06 20:35), 編輯推噓2(208)
留言10則, 5人參與, 3年前最新討論串1/1
大家好 最近在學習網站弱點的時候,發現一段程式,但不太明白其語法的涵義 因此想請問一下這種寫法的意思是什麼 以下是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

08/06 20:47, 3年前 , 1F
看起來是IIFE,但少了個括號,這樣能執行嗎@@
08/06 20:47, 1F

08/06 20:52, 3年前 , 2F
我有直接把整段程式複製到exploit server執行 是有結果的
08/06 20:52, 2F

08/06 22:30, 3年前 , 3F
你可以找"high order function"
08/06 22:30, 3F

08/06 22:33, 3年前 , 4F
大多是有react 底子的工程師會這樣寫。
08/06 22:33, 4F

08/06 22:36, 3年前 , 5F
是要找“curry javascript”才對
08/06 22:36, 5F

08/06 22:50, 3年前 , 6F
IIFE 在表達式 (expression) 中不用括號也可以執行
08/06 22:50, 6F

08/06 22:53, 3年前 , 7F
應該說加括號本來就是要讓它變成表達式
08/06 22:53, 7F

08/06 23:25, 3年前 , 8F
謝謝樓上
08/06 23:25, 8F

10/11 14:23, 3年前 , 9F
這應該跟react沒關係 個人不愛這種寫法 也很少看到在迴
10/11 14:23, 9F

10/11 14:23, 3年前 , 10F
圈用IIFE 很難閱讀
10/11 14:23, 10F
文章代碼(AID): #1X3IodQN (Ajax)
文章代碼(AID): #1X3IodQN (Ajax)