關於 JavaScript 中的特殊函式,你應該這樣看

weixin_46229298發表於2020-10-26

特殊函式

在 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;}));

如下所示:
https://gitee.com/project_almanac/change/raw/master/JavaScript/TiFuecn

帶引數的回撥函式:

https://gitee.com/project_almanac/change/raw/master/JavaScript/tsndzz2

自調函式

所謂自調函式就是在定義函式後自行呼叫。如下示例:

(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

相關文章