函數(shù)的5種聲明
第一種聲明
1
- function是關(guān)鍵字
-
console.log(x),x只能是字符串至朗,如果不是字符串就調(diào)用x.toString()方法
2
函數(shù)與字符串區(qū)別有沒(méi)有雙引號(hào)
-
下面圖片有console.log()原型
3
第二種聲明
4
第三種聲明
5
區(qū)別
6
-
解釋上圖
7 - 綠色是y的作用區(qū)域
第4種聲明
8
- 答案是a n=1
第五種聲明
9
用sum= (x,y)=>x+y不能有多句話(huà)和不能返回對(duì)象
10
總結(jié)
11
箭頭函數(shù)沒(méi)有名字
函數(shù)的屬性name
12
13
如何調(diào)用函數(shù)
- 調(diào)用call
-
函數(shù)是一段可以反復(fù)調(diào)用的代碼塊
函數(shù)內(nèi)存圖
用純對(duì)象構(gòu)造函數(shù)
1 - 可以執(zhí)行的代碼的對(duì)象叫做函數(shù)
回顧
2
3
- 右邊是真正用法(硬核)
this和arguments
1
2
3
-
普通模式下如果this是undefined荒揣,瀏覽器會(huì)把undefined改成window
4
回顧
5
arguments
6
- arguments是偽數(shù)組,proto沒(méi)有指向Array.prototype
call stack 調(diào)用棧
7
8
總結(jié)過(guò)程
8
9
遞歸
9
stack overflow 還是一個(gè)解答網(wǎng)站哦
10
作用域
11
12
- 只要有函數(shù)就有作用域 就近原則找
- 變量提升 先找聲明
- 看到代碼聲明提升
閉包
- 如果一個(gè)函數(shù)画机,使用了它范圍外的變量冶伞,那么(這個(gè)函數(shù)+這個(gè)變量)就叫做閉包