關於 JavaScript 中的特殊函式,你應該這樣看
特殊函式
在 JavaScript 中存在許多特殊的函式,以下講述了一些常見的特殊函式。
- 匿名函式
- 回撥函式
- 自調函式
- 作為值的函式
匿名函式
JavaScript 可以將函式作為資料使用。作為函式本體,它像普通的資料一樣,不一定要有名字。預設名字的函式被稱之為匿名函式。如下示例:
function(a){
return a;
}
匿名函式的兩種用法:
- 回撥函式:可以將匿名函式作為引數傳遞給其他函式。這樣,接收方函式就能利用所傳遞的函式來完成某些事情
- 自調函式:函式呼叫自身(定義即呼叫的函式),可以定義某個函式來執行某些一次性任務
回撥函式
當一個函式作為引數傳遞給另一個函式時,作為引數的函式被稱之為回撥函式。
function add(a,b){
return a() + b();
}
var one = function(){
return 1;
}
var two = function(){
return 2;
}
console.log(add(one,two)); // output 3
// 可以直接使用匿名函式來替代 one() 和 two(),以作為目標函式的引數
console.log(add(function(){return 1;},function(){return 2;}));
帶引數的回撥函式:
自調函式
所謂自調函式就是在定義函式後自行呼叫。如下示例:
(function(){
console.log('javascript');
})();
上述程式碼的含義如下:
- 第一對括號的作用,放置的是一個匿名函式。
- 第二對括號的作用,是“立即呼叫”
自調函式只需將匿名函式的定義放進一對括號中,然後外面再根一對括號即可。
作用:用於執行一次性的邏輯任務
應用:作為整體邏輯程式碼外層結構
自調函式有多種寫法:
// 自調函式有多種不同寫法
(function(v){
var w = 100; // 區域性變數
console.log('this is ' + v);
})('function');
// 表示式方式
(function(v){
var w = 100; // 區域性變數
console.log('this is ' + v);
}('function'));
+function(v){
var w = 100; // 區域性變數
console.log('this is ' + v);
}('function');
!function(v){
var w = 100; // 區域性變數
console.log('this is ' + v);
}('function');
~function(v){
var w = 100; // 區域性變數
console.log('this is ' + v);
}('function');
作為值的函式
將一個函式作為另一個函式的結果進行返回,作為結果返回的函式稱之為作為值的函式。
function fn(f,args){
return f(args);
}
function add(num){ // 作為值的函式
return num+10;
}
var result = fn(add,10);
console.log(result); // 20
相關文章
- 【譯】關於JavaScript 陣列你應該知道的事情JavaScript陣列
- 關於javascript中變數及函式的提升JavaScript變數函式
- 【譯】關於 JavaScript 的原型你應該知道的所有事情JavaScript原型
- 關於面試,我這樣看面試
- 關於 jwt ,你應該知道的JWT
- 你應該知道的關於SEO和Javascript的6個事實JavaScript
- 關於JavaScript的作用域你應該瞭解的那點事!JavaScript
- 關於 jwt 你應該知道的事情JWT
- Python中,類的特殊方法與內建函式的關聯Python函式
- 關於WSL2你應該知道的
- 這些 JavaScript函式讓你的工作更加 So Easy!JavaScript函式
- 關於前端模組化你應該知道的前端
- 關於字元編碼你應該知道的事情字元
- Linux 中關於 known_hosts 檔案,你所應該知道的Linux
- 關於cuda中的函式問題函式
- 關於建表欄位是否該使用not null這個問題你怎麼看?Null
- JavaScript函式的反應性JavaScript函式
- JavaScript中的compose函式和pipe函式JavaScript函式
- 中科三方:關於SSL證書你應該知道這些事
- 企業通關必備,iPaaS應該這樣搭建
- 19年你應該關注這50款前端熱門工具(中)前端
- 關於 js 中的回撥函式 callbackJS函式
- 關於scala中的主建構函式函式
- 關於C++當中的“模板函式”C++函式
- 《基於MVC的javascript web富應用開發》中的一些函式MVCJavaScriptWeb函式
- markdown裡的微積分中dt應該這樣寫
- 2020年你應該關注這50款前端熱門工具,JavaScript外掛篇(一)前端JavaScript
- javascript函式中with的介紹JavaScript函式
- JavaScript中的函式繼承JavaScript函式繼承
- 關於這場Python 和Scala的較量,你怎麼看?Python
- 函式節流你應該知道的那點事,建議收藏!函式
- 瞧瞧,這樣的「函式」才叫 Pythonic函式Python
- 這樣玩雲函式路由,讓你看起來很高階函式路由
- [譯] JavaScript 中的 CSS:基於元件的樣式的未來JavaScriptCSS元件
- 關於count函式的理解函式
- TypeScript 中函式的理解?與 JavaScript 函式的區別?TypeScript函式JavaScript
- 關於億級賬戶資料遷移,你應該試試這種方法...
- 關於響應式佈局,你必須要知道關於響應式佈局的幾件事