中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中的特殊函數怎么使用

發布時間:2022-06-29 14:01:49 來源:億速云 閱讀:119 作者:iii 欄目:開發技術

這篇文章主要介紹“JavaScript中的特殊函數怎么使用”,在日常操作中,相信很多人在JavaScript中的特殊函數怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JavaScript中的特殊函數怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

 匿名函數

JavaScript 可以將函數作為數據使用。作為函數本體,它與普通的數據一樣,不一定有名字。沒有名字的函數被稱之為匿名函數。

示例代碼如下:

//匿名函數
 function(){               //匿名函數,會報錯
     return '一碗周'; 
}

但是在 JavaScript 并不支持匿名函數的語法,不過匿名函數有兩個應用,如下所示:

  • 回調函數:將一個函數作為另一個函數的參數使用,作為參數的函數

  • 自調函數:函數調用自身(定義即調用的函數)

回調函數

然函數與任何可以被賦值給變量的數據是相同的,那么它當然可以像其他數據那樣被定義、刪除、拷貝,以及當成參數傳遞給其他函數。

當一個函數作為參數傳遞給另一個函數時,作為參數的函數被稱之為回調函數。作為使用回調函數的函數稱為目標函數(外層函數)

示例代碼如下所示

// 定義一個函數,這個函數有兩個函數類型的參數,然后分別執行那兩個函數,并返回它們的和。
function sum(a, b) { // -> 目標函數
  return a() + b()
}
function one() { // -> 回調函數
  return 1;
}
function two() { // -> 回調函數
  return 2;
}
console.log(sum(one, two)); // 3

執行流程如下:

當執行 sum 函數時,傳入兩個實參,在 sum 函數中,會將兩個實參作為函數執行,并將返回值計算并返回。

匿名回調函數

所謂匿名回調函數,就是目標函數中的參數是沒有名稱的函數,將上一段代碼修改為使用匿名回調函數

// 定義一個函數,這個函數有兩個函數類型的參數,然后分別執行那兩個函數,并返回它們的和。
function sum(a, b) { // -> 目標函數
  return a() + b()
}
console.log(sum(
  function () { // -> 匿名回調函數
    return 1
  },
  function () { // -> 匿名回調函數
    return 2
  })); // 3

帶參數的回調函數

function multiplyByTwo(a, b, c, callbakc) {
  var i, ar = []
  for (i = 0; i < 3; i++) {
    // 通過 arguments 對象將傳入的參數 * 2,然后傳入回調函數進行操作
    ar[i] = callbakc(arguments[i] * 2);
  }
  return ar;
}
console.log(multiplyByTwo(1, 2, 3,
  function (a) { // 匿名回調函數
    return a + 2
  }));

回調函數的優點:

  • 匿名回調函數節省了全局命名空間

  • 將私有的數據內容開放給指定位置使用

  • 保證封裝性 - 雖然可以使用私有數據,但是并不知道來源

  • 有助于提升性能

但是回調函數也是有缺點的,當目標函數的參數是一個回調函數時,回調函數的參數又是另一個回調函數,另一個回調函數的參數還是一個回調函數&hellip;也就是套娃,也就形成了回調陷阱或稱回調地獄

自調函數

目前我們已經討論了匿名函數在回調方面的應用。接下來我們討論另外一種情況,即自調函數,這種函數可以在定義后立即調用。示例代碼如下所示

(
  function () {
    console.log("自調函數");
  }
)()

這種語法看上去有點唬人,其實沒有什么,我們只需將匿名函數的定義放進一對括號中,然后外面再緊跟一對括號即可。

語法結構如下圖所示

JavaScript中的特殊函數怎么使用

值得注意的是,自調函數可以命名,但是還是會自調用,如果用函數名調用的話會拋出異常

自調函數除了以上兩種方式外,還有以下幾種不常用的方式

+ function (v) { // 形參
  var w = 100; // 局部變量
  console.log("自調函數" + v);
}(1);// 實參

! function (v) {
  var w = 100; // 局部變量
  console.log("自調函數" + v);
}(2);

~ function (v) {
  var w = 100; // 局部變量
  console.log("自調函數" + v);
}(3);

使用即時自調匿名函數的好處是不會產生任何全局變量。

缺點在于這樣的函數是無法重復執行的(除非將它放在某個循環或其他函數中)。這也使得即時函數非常適合于執行一些一次性的或初始化的任務。

作為值的函數

將一個函數作為另一個函數的結果并返回,作為結果返回的函數稱之為作為值的函數

示例代碼如下:

function outer() {
  var v = 100;
  // 在函數的函數體中定義另一個函數 -> 內部(私有)函數
  return function () { // 使用匿名函數
    return v * 2
  }
}
var result = outer();
console.log(result); // [Function]
// 或者下面這種方式與上面那種方式相同
function outer1() {
  var v = 100;
  // 在函數的函數體中定義另一個函數 -> 內部(私有)函數
  function inner() {
    return v * 2
  }
  return inner
}
var result1 = outer1();
console.log(result1); // [Function: inner]

這樣做的好處是:

  • 有助于我們確保全局名字空間的純凈性(這意味著命名沖突的機會很小)。

  • 確保私有性 &mdash; 這使我們可以選擇只將一些必要的函數暴露給“外部世界”,而保留屬于自己的函數,使它們不為該應用程序的其他部分所用。

到此,關于“JavaScript中的特殊函數怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南阳市| 襄城县| 芜湖县| 乐亭县| 平湖市| 安达市| 忻州市| 吉首市| 南陵县| 白玉县| 沂水县| 丹凤县| 进贤县| 梁平县| 塘沽区| 通许县| 通海县| 屯留县| 利津县| 龙山县| 宣汉县| 青河县| 湾仔区| 新乐市| 银川市| 康定县| 南京市| 法库县| 安多县| 佛冈县| 微山县| 二手房| 定安县| 灵宝市| 石河子市| 十堰市| 扶余县| 呼和浩特市| 资中县| 若尔盖县| 通化市|