Python JS基礎 基礎結構 函式

2022-06-23 18:39:13 字數 2241 閱讀 6168

四、函式初級

什麼是函式: 具有特定功能的**塊

函式與方法的區別: 呼叫方式的不同: 函式通過函式名 | 方法通過呼叫者.語法呼叫

如何定義函式:

function 函式名(引數列表)

函式的分類:

無參函式:

function fn1()

fn1();

有參函式:

function fn2(a,b)

fn2(10,20);

1、函式的定義

es5中定義函式

function 函式名 (引數列表)

​var 函式名 = function (引數列表)

es6中定義函式

let 函式名 = (引數列表) =>

匿名函式

(function (引數列表) )

​// 匿名函式需要自呼叫

(function (引數列表) )(引數列表);

var fn3=function()

fn3();

匿名函式的自呼叫:

(function())()

為什麼要出現匿名函式的自呼叫

在es5 的時候,沒有塊級作用域的概念,想要產生區域性作用域的變數只能通過在函式體內部定義變數了, 所以匿名函式的自呼叫很多時候是為了生成一個區域性的作用域

(function())();

2、函式的呼叫

函式名(引數列表)

注意: 函式的呼叫()一定不可以省略,引數列表看情況(不管需不需要,均可以傳或不傳)

系統不會在()()之間新增; 作為結束語句,需要新增分號時一定需要手動新增

3、函式的引數

js中有參函式呼叫的原則:

js中只有位置引數,沒有關鍵字引數

傳引數的時候, 無論傳多少個值,嚴格按照位置引數進行一一對應進行傳值, 多傳的引數沒有對應的位置引數進行接收時會自動被丟棄

在傳參的時候指定哪個值為多少時要按照位置進行傳值,按照引數名進行傳值是無效的

function func1()

// 傳不傳引數均可以呼叫

func1();

func1(10, 20);

function func2(a, b)

func2()

func2(10)

func2(10, 20)

func2(10, 20, 30)

預設值引數

使用預設值引數時,傳入的值也是按照位置進行傳值的

不管該位置引數是否有預設引數,只要該位置有值傳進來該位置上的引數值就會被替代

function func3(a, b=20, c, d=40)

var temp = 1000;

func3(10, 100, temp)  // 函式呼叫傳入的實際值,或擁有實際值的變數為實參

js中函式傳參時的大致規則:

個數不需要統一

function fn (a, b, c)

fn(100);

​function fn (a)

fn(100, 200, 300)  // 200,300被丟棄

可以任意位置具有預設值

function fn (a, b=20, c, d=40)

fn(100, 200, 300);

通過...語法接收多個值

function fn (a, ...b)

fn(100, 200, 300);

// ...變數必須出現在引數列表最後

函式的引數小結::

1.實參與形參個數可以不匹配,隨意規定

2.形參可以設定預設值(並非為py中的關鍵字引數)

3.實參對形參進行傳值時,完全採用位置匹配(eg:第n個實參一定將值傳遞給第n個形參)

4、返回值

function fn ()

// 1.可以空return操作,用來結束函式

// 2.返回值可以為任意js型別資料

// 3.函式最多隻能擁有一個返回值

js的函式只能返回一個值, 這個值可以為任意型別(如果想返回多個值,將多個值放到陣列或物件中)

let func4 = () => ;

console.log(func4())

函式的返回值小結::

1.函式的返回值有return來明確,沒有明確,則相當於返回undefined

2.函式只能返回一個值

3.函式的返回值就是函式的執行結果,也就是函式值

---------------------

原文: