函數(shù)

函數(shù)是用于封裝一段完成特定功能的代碼,相當(dāng)于將一條或者多條語句組成的代碼塊包裹起來。用戶在使用時,只需關(guān)心參數(shù)和返回值,就能完成特定的功能。

function 函數(shù)名(參數(shù)1,參數(shù)2,.......){

? ? ? ? //函數(shù)體

}

函數(shù)分為有參函數(shù)和無參函數(shù)

function greet(){

? ? console.log('Hello body');

}

function greet(a,b){

? ? a=parseInt(a);

? ? b=parseInt(a);

? ? return a>=b?a:b;

}

在Es6中還新增了含有默認(rèn)值的參數(shù)

函數(shù)可以賦值給一個變量,賦值為對象的屬性,作為參數(shù)傳入別的函數(shù),作為結(jié)果返回

調(diào)用:函數(shù)寫完后。并不是立即執(zhí)行的,想讓他發(fā)貨作用,那么需要調(diào)用這個函數(shù)。

函數(shù)名稱(參數(shù)1,參數(shù)2,......)

變量的作用域:

變量的使用是需要先聲明后使用的,而且變量的使用也是有范圍的。這個范圍被稱為變量的作用域。

分為 3種(1)全局變量

? ? ? ? ? ? ? (2)局部變量

? ? ? ? ? ? ? (3)塊級變量(Es6新增)、

此外還需要注意的是 當(dāng)局部變量和全局變量重名是,局部變量的優(yōu)先級高于全局變量。例

var a='one'

function test(){

? ? var a='two'

? ? console.log(a)

}

test();

for(let a=0;a<3;++a){

? ? console.log(a);

}

console.log(a);

輸出結(jié)果為:

two

0

1

2

one

匿名函數(shù):

這個是沒有函數(shù)名稱的函數(shù)。將聲明的函數(shù)賦值給一個變量。這種方法可以有效的避免全局變量的污染以及函數(shù)名的沖突。但是這種方法定義需要注意 函數(shù)定義必須在調(diào)用前

其中匿名函數(shù)有助于分為3種。如下:

var fun=function sum(num1,num2){

? ? return num1+num2;

};

fn(2,4);

自調(diào)用函數(shù):

(function (num1,num2){

? ? return num1+num2;

})(1,2)

?自調(diào)用函數(shù)也被稱為立即執(zhí)行函數(shù),是函數(shù)表達(dá)式,不能是函數(shù)聲明。創(chuàng)建一個獨(dú)立的作用域,避免被同名變量覆蓋

此外在處理事件的時候也可以用匿名函數(shù)。

回調(diào)函數(shù):

回調(diào)函數(shù)指的是一個函數(shù)A作為參數(shù)傳遞給一個函數(shù)B,然后在B的函數(shù)體內(nèi)調(diào)用函數(shù)A。函數(shù)A稱為回調(diào)函數(shù)。

例:

function cal(num.num2,fn){

? ? return fn(num1,num2);

}

console.log(cal(45,55,function(a,b){

? ? return a+b;

}));

console.log(cal(10,20,function(a,b){

? ? return a*b;

}));

回調(diào)函數(shù)方法

嵌套與遞歸:

嵌套函數(shù)值得是在一個函數(shù)內(nèi)部存在另外一個函數(shù)的聲明。

特點:內(nèi)層函數(shù)只能在外層函數(shù)作用域內(nèi)執(zhí)行,在內(nèi)層函數(shù)執(zhí)行的過程中,若需要引入某個變量,首先會在當(dāng)前作用域中尋找,若未找到,則繼續(xù)向上一層級的作用域中尋找,直到全局作用域,我們稱這種鏈?zhǔn)降牟樵冴P(guān)系為作用域鏈。

遞歸函數(shù):遞歸調(diào)用是函數(shù)嵌套調(diào)用中一種特殊的調(diào)用。它指的是一個函數(shù)在其函數(shù)體內(nèi)調(diào)用自身的過程,這種函數(shù)稱為遞歸函數(shù)。

遞歸函數(shù)在遍歷不固定的多位數(shù)組是特別合適,但是他占用的內(nèi)存和資源多,并且難以維護(hù),所以在開發(fā)使用需要注意嘎不是的遞歸調(diào)用。

閉包函數(shù):在JavaScript中,內(nèi)嵌套函數(shù)定義在外層函數(shù)中的所有變量和函數(shù),并包括其外層函數(shù)能訪問的所有變量和函數(shù)。但是需要注意的是在函數(shù)外部是不能訪問函數(shù)的內(nèi)部變量和嵌套函數(shù)的。

特點:閉包類似于面向?qū)ο蟮臄?shù)據(jù)隱藏和封裝,所以在前面時候 JavaScript是支持面向?qū)ο蟮摹?/p>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.函數(shù)參數(shù)的默認(rèn)值 (1).基本用法 在ES6之前,不能直接為函數(shù)的參數(shù)指定默認(rèn)值,只能采用變通的方法。
    趙然228閱讀 829評論 0 0
  • 本文檔內(nèi)容參考 《JavaScript 闖關(guān)記》之函數(shù) 函數(shù)是一段代碼,它只定義一次,但可以被執(zhí)行或調(diào)用任意次。在...
    穿越人海遇見你閱讀 1,105評論 0 1
  • 1. 函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 使用function關(guān)鍵字聲明一個函數(shù)時,聲明不必放到調(diào)用的前面。//函數(shù)聲...
    _李祺閱讀 329評論 0 0
  • 1. 函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 (*) 函數(shù)在JS中有三種方式來定義:函數(shù)聲明(function decla...
    進(jìn)擊的阿群閱讀 479評論 0 1
  • 一、函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別? 函數(shù)聲明和函數(shù)表達(dá)式的區(qū)別:函數(shù)聲明可以提升到其他代碼之前(即函數(shù)聲明前置)...
    __Qiao閱讀 337評論 0 0

友情鏈接更多精彩內(nèi)容