js中的函式

2022-03-08 10:02:28 字數 3740 閱讀 1286

函式

函式是實現某乙個功能的方法

也叫做子程式,(oop中)方法

function 函式名(形參)

函式名() ——>把建立的函式執行,而且這個函式可以執行很多次

每執行一次都相當於把函式體中實現功能的js**重複執行了一遍

在真實專案中,我們一般都會把實現乙個具體功能的**封裝在函式中

1、如果當前這個頁面功能需要在頁面中執行多次,不封裝成為函式,每一次實現這個功能都需要重新把**寫一次,浪費時間;而封裝在乙個函式中,以後想實現多次這個功能,我們就沒有必要再重新寫**了,只需要把函式重新執行即可,提高了開發效率。

2、封裝在乙個函式中,頁面上基本就很難出現重複一樣的**了 ,減少了頁面中**的冗餘度,提高了**的重複利用率:低耦合高內聚

我們把以上特點成為函式封裝(oop物件導向程式設計思想,需要我們掌握的就是類的繼承、封裝、多型)

函式作為js中引用資料型別中的一種,也是按照引用位址來操作的

function fn() 

fn()

函式執行

閉包小知識函式執行會形成乙個私有的作用域,讓裡面的私有變數和外界互補影響(相互不干擾、外面的無法直接獲取裡面的變數值),此時我們可以理解為私有作用域把私有變數保護起來的,我們把這種保護機制稱之為閉包

棧記憶體作用域(全域性作用域/私有作用域):提供乙個js**執行的環境

堆記憶體

所有的引用資料型別,它們需要儲存的內容都在堆記憶體中(相當於乙個倉庫,目的是儲存資訊)

形參:提供入口,需要使用者執行函式的時候把需要的值傳遞進來,形參是個變數,用來儲存和接收這些值

實參:函式執行的時候傳遞給形參的具體值

1 function sum(num1,num2) 

7 sum(2,3) //

這裡的2,3就是實參

89 sum(10) //

num1=10 num2=undefined 定義了形參但是執行時沒有傳遞實參,預設實參的值是undefined

10function sum(num1,num2)

25 sum(10) //

num1=10 num2=undefined 定義了形參但是執行時沒有傳遞實參,預設實參的值是undefined

|| 或操作符的小知識點num2 = num2 || 0 表示:如果num2 為null或undefined,則將num2 賦值0,否則num2 不變。目的是防止num2 為null或未定義的錯誤。

其中:||表示或操作,第乙個條件為真,則結果為真而不需要執行第二個條件;否則執行第二個條件,等價於以下**:

1

if(num2 )else

當我們不知道使用者具體要傳遞幾個值的時候(傳遞幾個值都行),此時我們無法設定形參的個數:遇到此類需求,我們就需要使用函式內建實參集合arguments

1、arguments 只有函式才有

2、不管執行函式的時候是否傳遞實參,arguments天生就存在,沒有傳遞實參arg是個空的集合;傳遞了實參,arg中就包含了所有傳遞的實參值。

3、不管是否設定了形參,arg中始終儲存了所有實參資訊

1

function fn()5}

6 fn(1,2,3,4,5,6)

arguments是乙個類陣列集合

特點

1、以數字作為索引(屬姓名),從0開始

arguments[0]

arguments[1]

2、有乙個length的屬性,儲存的是當前幾個實參的長度(傳遞實參的個數)

arguments.length

arguments[『length』]

arguments.callee 儲存的是當前函式本身

arguments.callee.caller 儲存的是當前函式在哪執行的(宿主函式),在全域性作用域執行的結果是null

arguments.callee 和arguments.callee.caller 一般真正專案中很少使用,因為在js嚴格模式下(use strict)不允許我們使用這倆個屬性,而現在專案大部分都是基於嚴格模式來的

1

"use strict"//

在就是**執行之前加這句話,開啟js的嚴格模式

2function sum()

6function fn()

9 fn()

任意數求和

1

function sum()

7console.log(total)8}

9 sum(10,20,'

30','

abc')

閉包的保護機制導致私有作用域會保護裡面的私有變數,所以我們獲取不到函式裡面的變數的值

返回值是函式提供的乙個出口:我們如果想在外面使用函式私有的一些資訊,那麼就需要通過return把這些資訊返回出來供外面使用

1

function sum()

7return total //

return後面跟著的都是值(返回的都是值):此處不是把total變數返回,而是把total儲存的值返回而已8}

9var total= sum(10,20)//

=>外面是全域性下的total和函式中的total沒有必然聯絡

10 console.log(sum(10,20,'

30','

abc'

))11

//=>sum:代表函式本身

12//

=>sum():讓函式先執行,代表的是當前返回的結果(return後面是啥,相當於函式返回的是啥)

13function fn()

18 console.log(fn())//

=>如果函式中沒有寫return或者return後面啥也沒有,預設返回的結果就是undefined

沒有名字的函式

obox.onclick = function()

1

(function(n))(10)4

//自執行函式幾種書寫方式:符號只是控制語法規範

5;(function(){})()

6 ~function(){}()

7 -function(){}()

8 +function(){}()

9 !function(){}()

js中的函式

1 js中的string物件 1 內建的 2 屬性 length 3 方法 indexof 查詢子字串 匹配字串 查詢到了,返回 字串 出現的位置 沒有找到 返回 1 charat 返回指定位置的字串 substr 字串的擷取,可加兩個引數,形如 2,2 第二個位置 長度 也可以是乙個引數,則表示從...

JS中的函式

js的函式 1 js函式定義的方式 1 普通方式 語法 function 函式名 引數列表 示例 function method method 2 匿名函式 語法 function 引數列表 示例 var method function method 3 物件函式 語法 new function 引...

js中的函式

函式是一段在一起的 可以做某一件事的程式。也叫做子程式 oop中 方法 函式是實現某乙個功能的方法 function 函式名 形參 函式體 實現功能的具體js 函式名 把建立的函式執行,而且這個函式可以執行很多次在真實專案中,我們一般都會把實現乙個具體功能的 封裝在函式中 1 如果當前這個功能需要在...