函式
函式是實現某乙個功能的方法function 函式名(形參)也叫做子程式,(oop中)方法
函式名() ——>把建立的函式執行,而且這個函式可以執行很多次
每執行一次都相當於把函式體中實現功能的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或未定義的錯誤。其中:||表示或操作,第乙個條件為真,則結果為真而不需要執行第二個條件;否則執行第二個條件,等價於以下**:
1if(num2 )else
當我們不知道使用者具體要傳遞幾個值的時候(傳遞幾個值都行),此時我們無法設定形參的個數:遇到此類需求,我們就需要使用函式內建實參集合arguments1、arguments 只有函式才有
2、不管執行函式的時候是否傳遞實參,arguments天生就存在,沒有傳遞實參arg是個空的集合;傳遞了實參,arg中就包含了所有傳遞的實參值。
3、不管是否設定了形參,arg中始終儲存了所有實參資訊
1function 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()
任意數求和
1function sum()
7console.log(total)8}
9 sum(10,20,'
30','
abc')
閉包的保護機制導致私有作用域會保護裡面的私有變數,所以我們獲取不到函式裡面的變數的值返回值是函式提供的乙個出口:我們如果想在外面使用函式私有的一些資訊,那麼就需要通過return把這些資訊返回出來供外面使用
1function 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 如果當前這個功能需要在...