關於 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
相關文章
- 關於DNS,你應該知道這些DNS
- 【譯】關於JavaScript 陣列你應該知道的事情JavaScript陣列
- 關於面試,我這樣看面試
- 面試?或許你應該這樣面試
- 關於javascript中變數及函式的提升JavaScript變數函式
- 【譯】關於 JavaScript 的原型你應該知道的所有事情JavaScript原型
- 關於 jwt ,你應該知道的JWT
- 關於JavaScript的作用域你應該瞭解的那點事!JavaScript
- 你應該知道的關於SEO和Javascript的6個事實JavaScript
- javascript中關於匿名函式高階介紹JavaScript函式
- 關於 jwt 你應該知道的事情JWT
- 關於泛型, 各位看這樣合理不?泛型
- 關於Java面試,你應該準備這些知識點Java面試
- markdown裡的微積分中dt應該這樣寫
- 關於前端模組化你應該知道的前端
- 關於WSL2你應該知道的
- Oracle中關於函式的使用Oracle函式
- 關於qt中的tr()函式QT函式
- 你眼中的Python大牛,應該都看過這些書Python
- 這些 JavaScript函式讓你的工作更加 So Easy!JavaScript函式
- 關於建表欄位是否該使用not null這個問題你怎麼看?Null
- 關於字元編碼你應該知道的事情字元
- 關於iPhone SE你應該知道的20件事iPhone
- javascript中的函式JavaScript函式
- 19年你應該關注這50款前端熱門工具(中)前端
- Python中,類的特殊方法與內建函式的關聯Python函式
- 關於cuda中的函式問題函式
- 中科三方:關於SSL證書你應該知道這些事
- 企業通關必備,iPaaS應該這樣搭建
- 關於MySQL密碼你應該知道的那些事MySql密碼
- 關於 MySQL 密碼你應該知道的那些事MySql密碼
- 你應該知道的10件關於Java 6的事情Java
- 關於Java面試,你應該準備這些知識-第二篇Java面試
- Linux 中關於 known_hosts 檔案,你所應該知道的Linux
- 關於 js 中的回撥函式 callbackJS函式
- 關於scala中的主建構函式函式
- 關於C++當中的“模板函式”C++函式
- javascript中的原生函式JavaScript函式