使用匿名函式為setInterval傳遞引數

2021-07-16 02:01:03 字數 792 閱讀 7696

在使用jscript的時候,我們有時需要間隔的執行乙個方法,比如用來產生網頁ui動畫特效啥的。這是我們常常會使用方法setinterval或settimeout,但是由於這兩個方法是由指令碼宿主模擬出來的timer執行緒,在通過其呼叫我們的方法是不能為其傳遞引數。

我們常用的使用場景是:

"delayrun()

" , n);

"intervalrun()

", n);

delayrun, n);

intervalrun, n);

顯然強行代引數的呼叫:

"delayrun(param)

", n);

"intervalrun(param)

", n);

delayrun(param), n);

intervalrun(param), n);

都是錯誤的,因為string literals形式的方法呼叫,param必須是全域性變數(即window物件上的變數)才行;而function pointer形式的呼叫,完全錯誤了,這是把函式的返回值當成了settimeout/setinterval函式的引數了,完全不是我們所望的事情

解決這個問題的辦法可以使用匿名函式包裝的方式,在以下scenario中我們這麼做:

foo()

, 888);

function

interalrun(times)

這樣一來,就可以不再依賴於全域性變數向delayrun/intervalrun函式中傳遞引數,畢竟當頁面中的全域性變數多了以後,會給指令碼的開發、除錯和管理等帶來極大的puzzle。

匿名函式的使用

匿名函式,說白了就是 沒有名字的函式 恩廢話。給一段 可能更為直白 foo function 對,這就是匿名函式,沒什麼特別的,和一般函式結構神似,唯獨少了個函式名。而且這個函式可以作為乙個值被賦予乙個變數或者物件屬性。這種特性使得擁有匿名函式的程式語言再設計一些應用時,更為靈活。匿名函式和普通函式...

python匿名函式的使用

1.enumerate 方法可以同時拿到index和value。2.python匿名函式,lambda表示式,可以簡化 詳見2.2視覺化過程。3.map 函式返回的是map型別,需要轉換成list型別。示例 如下 coding utf 8 import requests from bs4 impor...

js匿名函式的使用

一 函式的宣告及呼叫 1.函式的宣告格式 function 函式名 引數1,引數2,函式的呼叫 1 直接呼叫 函式名 引數1的值,引數2的值,文件注釋 2 事件呼叫 在html標籤中,使用事件名 函式名 2.函式的注意事項 1 函式名必須要符合小駝峰法則,首字母小寫,之後每隔單詞首字母大寫 2 函式...